Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Einstig in die Programmierung mit ACAD

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Einstig in die Programmierung mit ACAD (2640 mal gelesen)
Fiedel93felix
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Fiedel93felix an!   Senden Sie eine Private Message an Fiedel93felix  Schreiben Sie einen Gästebucheintrag für Fiedel93felix

Beiträge: 448
Registriert: 19.02.2014

Autodesk Inventor 2014
AutoCAD Mechanical 2014
Microsoft Visual Basic 2010

erstellt am: 17. Nov. 2016 13:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo miteinander,

ich arbiete schon eine Weile mit Inventor und hab da auch schon viele zusätzliche Tools programmiert.
Dabei habe ich über vb .net programmiert externe Programme erstellt.

Mein zweites Werkzeug ist ACAD-Mechanical.
Im ACAD arbeiten wir ausschließlich im Modellbereich und erstellen in diesem Zeichnungen.

Jetzt möchte ich gern verschiedene Variablen aus Eingabemasken in bestimmten Textfeldern anzeigen lassen.
Wie gehe ich dabei vor, bzw mit was sollte ich mich befassen??

Vielen Dank im Vorraus

------------------
----------------------------------
Mit freundlichen Grüßen

Felix

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 17. Nov. 2016 19:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Hallo Felix,

Leider kann ich mit Deiner Beschreibung wenig anfangen, vielleicht kannst Du Dein Vorhaben etwas genauer beschreiben.

Um welche Art von Variablen handelt es sich? Autocad Systemvariable? Eigendefinierte Variable ? Für was? Wo sollen diese gespeichert werden?
Eingabemaske - Ein Formular? Woher kommen die Vorgabewerte?

Beschreibe doch bitte Dein Projekt etwas genauer, dann können sicherlich bessere Hinweise gegeben werden.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Ehrenmitglied V.I.P. h.c.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 17. Nov. 2016 21:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Was bedeutet in dem Fall "externe Programm", kennst du dich mit dem Inventor-Objektmodell nun aus oder hast du bisher nicht in den Inventor eingegriffen?

Die einzige sinnvolle Antwort auf die formulierte Frage scheint mir aktuell zu lauten:
Mache dich mit dem DWG Objektmodell vertraut.

Da du in .Net entwickeln möchtest wäre unser allgemeines Autodesk .net Forum das Richtige für dich mit diesem Anliegen, http://ww3.cad.de/cgi-bin/ubb/forumdisplay.cgi?action=topics&number=352

Zu Autodesk und VB.net gibt es Bücher.
Die Autocad und Mechanical Systemvariablen gibt es in der Hilfe, sowie viele Beispiele (Code) im www.
Die Gundlage sollte das "Anwenderwissen" des Programmes sein und als nächstes "wie erhalte ich Informationen" über die Objekte.

Mechanical spezifisch wird es eher weniger "Doku" geben, Acad allgemein recht viel.

Die Frage ist halt: Wo stehst du JETZT.

Wenn du dich mit der Programmiersprache und Umgebung nicht mehr befassen mußt, weil das Wissen vorhanden ist, geht es "nur noch" um das Objektmodell.

https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-NET/files/GUID-47E8A12E-2ED4-4E78-ADA3-AAC9B4223C3C-htm.html

Hilfreich wäre sicher wenn dir hier unsere .net Inventorianer etwas schreiben würden, welche sich zugleich in Acad/Mech auskennen.

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Fiedel93felix
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Fiedel93felix an!   Senden Sie eine Private Message an Fiedel93felix  Schreiben Sie einen Gästebucheintrag für Fiedel93felix

Beiträge: 448
Registriert: 19.02.2014

Autodesk Inventor 2014
AutoCAD Mechanical 2014
Microsoft Visual Basic 2010

erstellt am: 18. Nov. 2016 09:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank erstmal für die Antworten 

Also ich erklär mal was ich bis jetzt so gemacht habe und was ich im ACAD haben möchte:

Zur Zeit habe ich nur für Inventor Programmiert als extrerne Programme, d.h. ich habe mit vb.net (Microsoft Visual Basic 2010 Express) .exe Dateien erstellt welche ich als Zusatstools in Inventor eingebunden habe.
Ich habe also nicht mit dem Inventor VBA oder iLogic gearbeitet.
Diese Zusatztoole werden dem Nutzer als Button angezeigt und werden durch einen Klick gestartet.

Mit diesen Programmen habe ich eine teil automatisierte Zeichnungserstellung geschaffen.
Der Nutzer Startet dazu das erste Programm.
In diesem werden Daten aus Werkzeuglisten eingelesen und können ausgewählt werden.
Anschließend wählt der Nutzer seine Anschlussteile für die dann Werte nach der entsprechenden Norm eingelesen werden.
Daraufhin wird eine Vorlage-Baugruppe geöffnet und es werden die Parameter der Bauteile Angepasst, sodass ein Massstäbliches Modell entsteht.
Von diesem wird dann eine Zeichnung abgeleitet mit Stückliste und Einzelteilzeichnungen der Bauteile.

Bei der Zeichnungsableitung arbeite ich viel über Benutzerdefinierte iProperties die ich in Textfeldern einbinde.

Das ganze funktioniert ganz okay und ist zur Zeit in der Testfase.

Mein Problem ist, dass mein Chef möchte das alle Zeichnungen als .DWG vorhanden sein müssen.
Beim export der Zeichnungen gibt es immer wieder Probleme und einiges wird zerschossen.
Deshalb dachte ich mir ich erstelle eine Vorlage in die die Iproperties aus der Invnetorzeichnung eingelesen werden können.
Für das Grundbauteil nutzen wir eine Prinzipskizze ind die nur die Werte eingetragen werden, da der Grundaufbau immer gleich ist.
Für die Kombinationszeichnung sollte nur das Schriftfeld und fie Stückliste durch Variablen ausgefüllt werden.
Das Modell für die Kombinationszeichnung muss händisch eingefügt und bemaßt werden.

Dazu jetzt meine Fragen:
Gibts es für ACAD ähnliche Möglichkeiten Zusatztools einzubinden wie bei Inventor?
Mit was für Variablen sollte ich am besten arbeiten wenn ich nur Text in Textfeldern anzeigen möchte?
Muss ich alle Variablen in der Vorlage definieren?


Ich glaube das reicht erstmal.

------------------
----------------------------------
Mit freundlichen Grüßen

Felix

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 18. Nov. 2016 16:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Nachdem die gleiche Fragestellung im richtigeren Autocad ARX und .NET Forum gestellt wurde,
stelle ich hier mal den Link zu weiteren Antworten ein

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rexxitall
Mitglied
Dipl. -Ing. Bau


Sehen Sie sich das Profil von rexxitall an!   Senden Sie eine Private Message an rexxitall  Schreiben Sie einen Gästebucheintrag für rexxitall

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 24. Nov. 2016 19:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Hi,
Da du in einem VBA Forum gelandet bist einige Lösungsvorschläge in VBA.
1.) Alles was man mit Formularen in VB6 oder irgendeinem VBA veranstalten kann funktioniert auch in Autocad.

2.) Texte mit Variablen vorzubelegen geht, ist aber trickreich. Hintergrund ist einfach, das man ja die Textfelder erst selektieren muß um zu wissen in was man hineinschreiben / auslesen möchte.
Sogenannte HANDLES verändern sich von Zeichnung zu Zeichnun, taugen also nicht dazu.

Ich hab da gerade so ein ähnliches Problem (Templatesystem) und gehe das wie folgt an.

Ich erzeuge für jeden Text ein ACADDICTIONARY also ein extension Dictionary.
In diesem Dictionary schreibe ich den Textnamen , Das Texttemplate und die Eingabeaufforderungen für ggf lokale Variablen hinein. In deinem Falle dürfte es reichen Den Texten eine eindeutige Kennung zu geben. Diese ACADDictionarys überleben auch beim kopieren zwischen verscheidenen Zeichnungen.

Das Anklatschen von XDATA ist keine allzu gute Idee. Die überleben ein AUDIT ggf nur noch verkrüppelt. Glaub die werden bei 200 Zeichen abgeschnitten. Kann man ausprobieren, wenn die Länge langt aber...

Nun kann man diese Texte addressieren. Schlimmstenfalls läuft man einmal durch die Zeichnung und baut einen Index für die vorhandenen Namen auf. Ich mach soetwas geren mit den Windows scripting dictionarys. KEY=Textidentifyer und Value = HANDLE zu dem Textobjekt.
Somit lässt sich jedes Textelement über das Dictionary eindeutig ansprechen und der Inhalt ändern. Ewas programmcode zum spielen hab ich angehängt. Ich meine in einem meiner letzten Posts hab ich mich auch übder Dictionarys ausgelassen. Wenn nicht hier noch einmal fragen.

Das durchlaufen der Zeichnung um den Index aufzubauen geht selbst mittels Holzhammermethode rasend schenll. Eleganter ist eine Auswahl mit einem Selektionsetfilter. Man kann auch den Index in ein ACAD dictionary schreiben. Muß man dann aber pflegen - oder neu aufbauen... Da ist mir die Scripting Dictionary Methode lieber.


Gruß
Thomas

Function Entity_Set_EXT(Entity As AcadEntity, TAG As String, value As String) As Boolean
    Entity_Set_EXT = False
    Dim DICT As AcadDictionary
    Dim RECORD As AcadXRecord
    Const TYPE_STRING = 1

    Set DICT = Entity.GetExtensionDictionary
    On Error Resume Next
    err.Clear
    Set RECORD = DICT.GetObject(TAG)
    If err.number <> 0 Then
        Set RECORD = DICT.AddXRecord(TAG)
    End If
    On Error GoTo 0
   
    RECORD.TranslateIDs = True
    err.Clear
    ArraySize = 0
    Dim XRecordDataType As Variant
    Dim XRecordData As Variant
    ReDim XRecordDataType(0 To ArraySize) As Integer
    ReDim XRecordData(0 To ArraySize) As Variant
    XRecordDataType(0) = 1000
    XRecordData(0) = value
    Call RECORD.SetXRecordData(XRecordDataType, XRecordData)

    'RECORD.GetXRecordData XRecordDataType, XRecordData
    If err.number = 0 Then Entity_Set_EXT = True
End Function
Function Entity_Get_EXT(Entity As AcadEntity, TAG As String, value As String)
    Entity_Get_EXT = False
    Dim DICT As AcadDictionary
    Dim RECORD As AcadXRecord
   
   
   
   
    ArraySize = 0
    Dim XRecordDataType As Variant
    Dim XRecordData As Variant
    '        ReDim XRecordDataType(0 To ArraySize) As Integer
    '        ReDim XRecordData(0 To ArraySize) As Variant
       
   
    If Entity.HASEXTENSIONDICTIONARY Then
        err.Clear
        On Error Resume Next
        Set DICT = Entity.GetExtensionDictionary
       
        '        For i = 0 To dict.count - 1
        '  On Error GoTo 0
        '  Set RECORD = dict.ITEM(i)
        '
        '        RECORD.GetXRecordData XRecordDataType, XRecordData
        '
        '
        '        Value = XRecordData(0)
        '        ' debug.print RECORD.Name, Value
        '        Next
       
        Set RECORD = DICT.GetObject(TAG)
        RECORD.GetXRecordData XRecordDataType, XRecordData
     

        value = XRecordData(0)


     
        On Error GoTo 0
        If err.number = 0 Then Entity_Get_EXT = True
    End If
End Function

Sub Entity_clone_dict(Src As AcadEntity, dest As AcadEntity)
    Dim KEY As Variant
    Dim TYP As Variant
    Dim DAT As Variant
    Dim SRC_RECORD As AcadXRecord
    Dim DESR_RECORD As AcadXRecord
    Dim S As String
    Dim D As String
    Dim i As Long
    If Not Src.HASEXTENSIONDICTIONARY Then Exit Sub
    err.Clear
    On Error Resume Next
    Set DICT = Src.GetExtensionDictionary
    Set dic2 = dest.GetExtensionDictionary
   
   
    KEY = DICT.keys
    For i = 0 To DICT.count - 1
        Set SRC_RECORD = DICT.ITEM(CStr(KEY(i)))
        KEY = SRC_RECORD.name
        SRC_RECORD.GetXRecordData TYP, DAT
   
        S = KEY

   
        D = DAT(0)
   
        Call Entity_Set_EXT(dest, S, D)
   
        '    On Error Resume Next
        '    err.Clear
        '    Set DEST_RECORD = dict2.GetObject(KEY)
        '    If err.Number <> 0 Then
        '        Set DEST_RECORD = dict2.AddXRecord(KEY)
        '    End If
        '    On Error GoTo 0
        '
        '    ' debug.print TYP(0), DAT(0)
        '    Call DEST_RECORD.SetXRecordData(TYP, DAT)
    Next

    ' debug.print err.desc

End Sub

Function DRAWING_Set_DICT(dictname As String, TAG As String, value As String) As Boolean
    DRAWING_Set_DICT = False
    Dim DICT As AcadDictionary
    Dim RECORD As AcadXRecord
    Const TYPE_STRING = 1
    err.Clear
    On Error Resume Next
    Set DICT = ThisDrawing.Dictionaries(dictname)
    If err.number <> 0 Then
        err.Clear
        Set DICT = ThisDrawing.Dictionaries.Add(dictname)
    End If
    If err.number <> 0 Then Exit Function
    On Error GoTo 0
    On Error Resume Next
    err.Clear
    Set RECORD = DICT.GetObject(TAG)
    If err.number <> 0 Then
        Set RECORD = DICT.AddXRecord(TAG)
    End If
    On Error GoTo 0
   
    RECORD.TranslateIDs = True
    err.Clear
    ArraySize = 0
    Dim XRecordDataType As Variant
    Dim XRecordData As Variant
    ReDim XRecordDataType(0 To ArraySize) As Integer
    ReDim XRecordData(0 To ArraySize) As Variant
    XRecordDataType(0) = 1000
    XRecordData(0) = value
    Call RECORD.SetXRecordData(XRecordDataType, XRecordData)

    'RECORD.GetXRecordData XRecordDataType, XRecordData
    If err.number = 0 Then DRAWING_Set_DICT = True
End Function
Function DRAWING_Get_DICT(dictname As String, TAG As String, value As String) As Boolean
    DRAWING_Get_DICT = False
    Dim DICT As AcadDictionary
    Dim RECORD As AcadXRecord
   
    ArraySize = 0
    Dim XRecordDataType As Variant
    Dim XRecordData As Variant
    '        ReDim XRecordDataType(0 To ArraySize) As Integer
    '        ReDim XRecordData(0 To ArraySize) As Variant
    err.Clear
    On Error Resume Next
    Set DICT = ThisDrawing.Dictionaries(dictname)
    Set RECORD = DICT.GetObject(TAG)
    RECORD.GetXRecordData XRecordDataType, XRecordData
    value = XRecordData(0)
    On Error GoTo 0
    If err.number = 0 Then DRAWING_Get_DICT = True
   
End Function

Sub testextdat()
    Dim Entity As AcadEntity
    Dim value As String
    Dim solid As Acad3DSolid
 
    For i = 1 To 1024
        S = S & "aB"
    Next
    For Each Entity In ThisDrawing.modelspace
        Call Entity_Set_EXT(Entity, "TEST", Entity.HANDLE & S)
        Call Entity_Get_EXT(Entity, "TEST", value)
        ' debug.print Len(VALUE), VALUE
    Next
End Sub

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rexxitall
Mitglied
Dipl. -Ing. Bau


Sehen Sie sich das Profil von rexxitall an!   Senden Sie eine Private Message an rexxitall  Schreiben Sie einen Gästebucheintrag für rexxitall

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 24. Nov. 2016 20:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Zu Teil 2 der Frage
Externe Tools einbinden - keine gute Idee.
Anbinden geht über wasauchimmer. Wobei das wasauchimmer eingeschänkt ist. VBA64 bit hat so seine Probleme mit Winsock :/.

Und einem Timer um die Ankommenden Daten zu pollen ist out of the box auch nicht vorgesehen.
Stört auch nur den internen Betriebsablauf von Autocad - was eine ganz ganz dumme Idee ist.
(crasht u.U.)

Was man hingegen gut machen kann, ist von Autocad ein externes Programm anzustoßen, da hierbei Autocad die Kontrolle behält.

Kommunizieren kann man brutal über eine Textdatei oder eleganter über named Pipes.
Letzteres funktioniert auch bidirektional.

Natürlich lässt sich das ganze umschiffen indem man eine eigne DLL bastelt die diese Funktionen abbildet. z.B. eine Kommunikation über TCPIP. Aber auch hier besteht das Problem, das die Kommunikation nur dann erfolgen sollte, wenn acad gerade "Langeweile" hat.

Wie dem auch sei. Das Ganze funktioniert nur mit dem Windows API.
Wenn man mal den SHELL Befehl ausser acht lässt. Vielleicht beschreibst du mal genauer was genau du wie angebunden haben willst.

Ah ODBC mag auch zur kommunikation taugen. Nur als schräge Idee 
Gruß Thomas

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 07. Dez. 2016 10:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Fiedel93felix:
...
Gibts es für ACAD ähnliche Möglichkeiten Zusatztools einzubinden wie bei Inventor?
Mit was für Variablen sollte ich am besten arbeiten wenn ich nur Text in Textfeldern anzeigen möchte?
Muss ich alle Variablen in der Vorlage definieren?

Möglichkeiten Tools einzubinden gibt es verschiedene. Welche die Beste ist, hängt davon ab, wie du AutoCAD 'fernsteuern' möchtest.

Ich denke Variablen wäre für AutoCAD der falsche Begriff. Du solltest deine Vorlagenzeichnung so gestalten, dass die zu ändernden Texte eindeutig angesprochen werden können. Das Einfachste wäre: Du erstellst benutzerdefinierte Zeichnungseigenschaften und verweist auf diese mithilfe von Textfeldern. Dann genügt die Änderung der Zeichnungseigenschaften und in der Zeichnung werden die Werte korrekt angezeigt.

Ob du alle Variablen in der Vorlage definieren sollst -- keine Ahnung, auf jeden Fall alle, die geändert werden sollen.

Wie man AutoCAD nun dazu bringt die Änderungen vorzunehmen .. auch dafür gibt es verschiedene Möglichkeiten.
-> Benutzerdefinierte Zeichnungseigenschaften lassen sich auch ohne AutoCAD aus der dwg-Datei auslesen. Ändern habe ich noch nicht versucht, sollte wohl aber auch gehen. (Dann brauchst du nicht mal AutoCAD dazu.
-> Du kannst einen Dienst programmieren, an den du die Variablen schickst, der Startet dann AutoCAD, öffnet die Zeichnung nimmt die Änderungen vor und schließt AutoCAD wieder.
-> Du kannst auch die AutoCAD-Core-Konsole nutzen und diese über einen Dienst ansprechen
-> ...

Alle Vorschläge sind natürlich davon abhängig, wie dein Kenntnisstand in Sachen der Programmierung ist und welche Lösung sich überhaupt in euren Prozessen integrieren lässt.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Fiedel93felix
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Fiedel93felix an!   Senden Sie eine Private Message an Fiedel93felix  Schreiben Sie einen Gästebucheintrag für Fiedel93felix

Beiträge: 448
Registriert: 19.02.2014

Autodesk Inventor 2014
AutoCAD Mechanical 2014
Microsoft Visual Basic 2010

erstellt am: 07. Dez. 2016 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen dank Holger,

das ist genau das was ich gesucht habe.
Ich habe es versucht es funktioniert.
Ich muss nur alle Zeichnungseigenschaften die ich brauche bereits in der Vorlage definieren.

Jetzt stellt sich nur noch die Frage wie ich es einlese.
Die Werte ermittel ich aus verschiedenen Exceltabellen und Berechnungen und zeige die Ergebnisse in einer Eingabemaske.
Aus dieser möchte ich die Werte übernehmen.

Die Eingabemaske habe ich bereits ähnlich für Inventor erstellt (mit Visual Basic express) und würde die wenn es geht zum Großteil übernehmen.

------------------
----------------------------------
Mit freundlichen Grüßen

Felix

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 08. Dez. 2016 07:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Fiedel93felix:
...
Jetzt stellt sich nur noch die Frage wie ich es einlese.
Die Werte ermittel ich aus verschiedenen Exceltabellen und Berechnungen und zeige die Ergebnisse in einer Eingabemaske.
Aus dieser möchte ich die Werte übernehmen.
...


Wozu eine Eingabemaske? Du hast die Werte. das genügt, es sei denn, die sollen noch verändert werden.

Ich bin nun mehr in .Net unterwegs, weshalb ich nicht weiß, ob du in VBA eine Klasse serialisieren kannst. Wenn dem so ist, dann könntest du eine Klasse erstellen, die alle Eigenschaften beinhaltet, die in der Zeichnung gebraucht werden sollen. Wenn die die Klasse serialisierst und als XML speicherst, kannst du diese XML-Datei dann von AutoCAD aus wieder lesen und sofort wieder dein Objekt, mit dem du weiter arbeiten kannst.

Möglichkeiten gibt's viele: kannst auch einfach eine TXT-Datei schreiben, INI-Datei, ...
Blöd ist bei diesen Lösungen, dass die Auswertung der Werte nur über das Vergleichen von Strings möglich ist .. was den Code umfangreicher und unflexibel werden lässt, weshalb ich oben beschriebenes Serialisieren und Speichern als XML-Datei bevorzuge.

An deinen Fragen ist aber grundsätzlich gut zu erkennen, dass der Code selbst nicht die Lösung ist, vielmehr die Idee der Lösung bzw. des Lösungsweges, welches natürlich von dem Wissen der Möglichkeiten geprägt ist.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Fiedel93felix
Mitglied
Konstrukteur


Sehen Sie sich das Profil von Fiedel93felix an!   Senden Sie eine Private Message an Fiedel93felix  Schreiben Sie einen Gästebucheintrag für Fiedel93felix

Beiträge: 448
Registriert: 19.02.2014

Autodesk Inventor 2014
AutoCAD Mechanical 2014
Microsoft Visual Basic 2010

erstellt am: 08. Dez. 2016 08:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Eine Eingabemaske möchte ich machen da die Werte anhand von bestimmten werten aus den Datenbanken gefiltert werden und diese Werte muss der Anwender eingeben.
2. gibt es sonderfälle wo keine Werte in den Tabellen oder Berechnungen ermittelt werden können und hier muss der Anwender die benötigten Werte selbst errechnen bzw festlegen.

Ich würde die Eingabemaske gern im .net machen da alle meine Programme für Inventor auch mit .net geschrieben sind und ich da verschiedene Programmteile leicht übernehmen kann.

Mein problem ist nur, wie kann ich auf die Zeichnung zugreifen und wie kann ich danach auf die benutzerdefinierten Zeichnungseigenschaften zugreifen?

Eine Userform aus AutoCad öffnen klappt bis jetzt.

------------------
----------------------------------
Mit freundlichen Grüßen

Felix

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Ingenieur (m/w/d) - Strassenbau - Infrastruktur und Siedlungswasserwirtschaft

Zur Verstärkung unseres motivierten Teams suchen wir zum nächstmöglichen Zeitpunkt für den Standort Husum oder Leck einen/eine

INGENIEUR (M/W/D)

FACHRICHTUNG STRASSENBAU - INFRASTRUKTUR - SIEDLUNGSWASSERWIRTSCHAFT

Wir sind eine insbesondere national (Norddeutschland) tätige Ingenieurgesellschaft mit dem Hauptsitz in Husum und einer Zweigstelle in Leck....

Anzeige ansehenBauwesen
Brischke
Ehrenmitglied V.I.P. h.c.
CAD on demand GmbH



Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 08. Dez. 2016 12:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Fiedel93felix 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Fiedel93felix:
... Mein problem ist nur, wie kann ich auf die Zeichnung zugreifen und wie kann ich danach auf die benutzerdefinierten Zeichnungseigenschaften zugreifen?


Da musst du dich durch das AutoCAD Objectmodel hangeln im Internet findest du sicher auch Code:
Stichworte
Custom Drawing Properties
DocumentManager

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz