CADsite forum

AutoCAD => Dot Net API => Topic gestart door: EddyBeerke op wo 10 04 2013, 13:00:00

Titel: Na netload uitvoeren van code (opgelost)
Bericht door: EddyBeerke op wo 10 04 2013, 13:00:00
Kun je na het laden van een plugin (.dll) iets laten verschijnen op de commando regel?
Dus na het laden van de .dll wordt er een deel van de code uitgevoerd net zoals je dit kunt met lisp zie voorbeeld:
(defun C:MijnCommando ( / a )
  (setq a (getdist))
  (princ)
)
(princ "Type \"MijnCommando\" om te starten.")
(princ)

Titel: Re: Na netload uitvoeren van code
Bericht door: winnes op wo 10 04 2013, 17:14:54
Ja, dat is zelfs min of meer de bedoeling!?
Netload, aanduiden van je DLL, method name uit je DLL intikken en ENTER drukken... should do the trick...
Voor de juiste code, zie www of geef effe aan C# of VB.NET ...

Om op de commandoregel te printen, in C# alvast :


Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage("Hello World");


Is dat wat je beoogt?
Titel: Re: Na netload uitvoeren van code
Bericht door: EddyBeerke op do 11 04 2013, 08:27:30
Citaat van: winnes op wo 10 04 2013, 17:14:54
Ja, dat is zelfs min of meer de bedoeling!?
Netload, aanduiden van je DLL, method name uit je DLL intikken en ENTER drukken... should do the trick...
...
Is dat wat je beoogt?
Eigenlijk niet.
Ik wil met het laden van een .dll gelijk iets op de commando regel iets laten zien.
Bijvoobeeld:
CiteerDeze app is gemaakt door EddyBeerke, (c) 2013
Type  "MijnCommando" om te starten.

Dit wil ik weergeven zodat iemand gelijk na het laden weet welk commando hij/zij moet gebruiken.
Titel: Re: Na netload uitvoeren van code
Bericht door: winnes op do 11 04 2013, 08:57:12
Eddy,

Dan is het volgende wat je moet doen:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
   
namespace Oak
{
    public class OakInitialize : Autodesk.AutoCAD.Runtime.IExtensionApplication
    {
        public void Initialize()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("Deze app is gemaakt door EddyBeerke, (c)2013 \r\nType 'MijnCommando' om te starten");
        }
        public void Terminate()
        {
            //
        }
        [CommandMethod("MijnCommando")]
        public void MijnCommando()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            ed.WriteMessage("Dit is MijnCommando");
        }
    }
}


Gr.
Titel: Re: Na netload uitvoeren van code
Bericht door: EddyBeerke op do 11 04 2013, 16:51:50
Nou, het is gelukt na wat stoeien waar ik de code moest plaatsen.
Het staat nu in myPlugin.vb :
Imports System
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.EditorInput

' This line is not mandatory, but improves loading performances
<Assembly: ExtensionApplication(GetType(Iv_DWP_Afstanden.MyPlugin))>

Namespace Iv_DWP_Afstanden

    Public Class MyPlugin
        Implements IExtensionApplication

Public Sub Initialize() Implements IExtensionApplication.Initialize
           ' Initialize your plug-in application here
            Dim ed As Editor
            ed = Application.DocumentManager.MdiActiveDocument.Editor
            ed.WriteMessage("Iv_DWP_Afstanden id geladen.")
            ed.WriteMessage("Deze app is gemaakt door EddyBeerke, (c)2013")
            ed.WriteMessage("Type 'Iv_DWP_Afstand', 'Iv_DWP_Hoogte' of 'Iv_Toolpalette' om te starten")
        End Sub


Bedankt om mij in de goede richting te laten zoeken.
Titel: Re: Na netload uitvoeren van code (opgelost)
Bericht door: winnes op do 11 04 2013, 17:21:37
Blij dat ik kon helpen.
Had ik geweten dat je VB.NET prefereerde...
:wink:
Titel: Re: Na netload uitvoeren van code
Bericht door: robbie op di 16 04 2013, 11:52:45
Beste Eddy,

Ik ben niet zo'n held, kun je helpen waar ik jouw
code moet of kan plakken in:

Imports Autodesk.AutoCAD.Runtime
Public Class Form1

    <CommandMethod("Cursus1")> Public Sub Toonformulier()

            Me.Show()
    End Sub
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim a As Double
        a = Me.TextBox1.Text
        a = a + 1
        Me.Label1.Text = a
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class


Bij voorbaat dank.
Titel: Re: Na netload uitvoeren van code (opgelost)
Bericht door: EddyBeerke op wo 17 04 2013, 11:12:54
Ik gebruik de "AutoCAD 2013 VB plug-in" template van de ObjectARX.
Zie: http://www.autodesk.mx/adsk/servlet/index?siteID=123112&id=1911627

Dan krijg ik ook de "myPlugin.vb" en daar heb ik het in gezet.
Titel: Re: Na netload uitvoeren van code
Bericht door: HofCAD op wo 17 04 2013, 16:25:58
Citaat van: robbie op di 16 04 2013, 11:52:45
Beste Eddy,

Ik ben niet zo'n held, kun je helpen waar ik jouw
code moet of kan plakken in:

Beste Robbie,

Kijk eens in de bijlage!

Met vriendelijke groet, HofCAD CSI.
Titel: Re: Na netload uitvoeren van code
Bericht door: robbie op ma 22 04 2013, 08:44:40
Thanks Eddy en Hofcad,

De oplossing van Eddy is voor mij nu nog te moeilijk,
maar die van Hofcad is het precies.
Een extra vraag tav het programma, hoe kan ik maken dat
het programma na het sluiten van de dialoogbox opnieuw met
'Cursus1' gestart kan worden?

Bij voorbaat dank.
Titel: Re: Na netload uitvoeren van code (opgelost)
Bericht door: EddyBeerke op ma 22 04 2013, 09:53:16
Eigenlijk raar dat mijn oplossing te moeilijk is want we doen hetzelfde, het wordt het alleen uitgevoerd met het laden van de dll.
Van HofCAD:
    Public Sub Initialize() Implements IExtensionApplication.Initialize
        ' Initialize your plug-in application here           
        Dim ed As Editor
        ed = Application.DocumentManager.MdiActiveDocument.Editor
        ed.WriteMessage(vbCrLf & " Form1 is geladen.")
        ed.WriteMessage(vbCrLf & " Deze app is gemaakt door HofCAD CSI.")
        ed.WriteMessage(vbCrLf & " Type 'Cursus1' om te starten")
    End Sub

    Public Sub Terminate() Implements Autodesk.AutoCAD.Runtime.IExtensionApplication.Terminate

    End Sub


Van Mij:
        Public Sub Initialize() Implements IExtensionApplication.Initialize
           ' Initialize your plug-in application here
            Dim ed As Editor
            ed = Application.DocumentManager.MdiActiveDocument.Editor
            ed.WriteMessage("Iv_DWP_Afstanden id geladen.")
            ed.WriteMessage("Deze app is gemaakt door EddyBeerke, (c)2013")
            ed.WriteMessage("Type 'Iv_DWP_Afstand', 'Iv_DWP_Hoogte' of 'Iv_Toolpalette' om te starten")
        End Sub


Deze code wordt dus uitgevoerd bij het laden.

Wat je andere vraag betreft kun je beter een nieuwe topic starten denk ik.