|
Autocad VBA : Block copieren und neu einfügen
fuchsi am 20.07.2005 um 16:11 Uhr (0)
das geht mit Object DBX viel einfacher Leider habe ich nur ein Beispiel in LISP, wie man von einer externen Datei einen Block in die aktive Zweichnung kopieren kann. Aber vielleicht kannst du das nach VBA konvertieren ; Routinen für Object DBX Zugriff auf externe Zeichnungen ; ; (OdbxOpenDwg name) ; - name follstaändiger pfad mit .dwg ; - documentObject oder nil ; ; (OdbxCloseDwg doc) ; - documentObject ; - nil ; ; (OdbxCopyBlock doc blname newName) ; - documentObject ; - name ...
|
In das Form Autocad VBA wechseln |
|
Autocad VBA : Block copieren und neu einfügen
fuchsi am 20.07.2005 um 16:15 Uhr (0)
habe im vorigen Lisp-Beispiel die Funktion Try vergessen, die wird dazu benötigt. Das ganz wird dann so verwendet (setq doc (OdbxOpenDwg d: est.dwg )) (OdbxCopyBlock doc Blockname_in_test.dwg gewünschter_Blockname_in_aktueller_Zeichnung) (OdbxCloseDwg doc) ;------------------------------------------------------------------------------ ; Testroutine ergibt nil im Fehlerfall ansonst den Rückgabewert der zu ; testenden Funktion ; ist d ...
|
In das Form Autocad VBA wechseln |
|
Autocad VBA : Block copieren und neu einfügen
fuchsi am 20.07.2005 um 16:45 Uhr (0)
hab mal schnell das in VBA ausprobiert das geht ja noch viel einfacher als in LISP !!! Set odbx = ThisDrawing.Application.GetInterfaceObject( ObjectDBX.AxDbDocument.16 ) für Acad2005 !!!!!!! odbx.Open ( d: est.dwg ) die externen Zeichnung Dim objCollection(0) As Object Set objCollection(0) = odbx.Blocks( sourceblock ) der zu kopierende Blockname Call odbx.CopyObjects(objCollection, ThisDrawing.ModelSpace) ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC
|
In das Form Autocad VBA wechseln |
|
Autocad VBA : ARX-Anwendungen
fuchsi am 28.11.2003 um 14:25 Uhr (0)
eine technologie habe ich noch vergessen Object DBX das ermöglich den zugriff auf dwg-zeichnungen ohne autocad installiert zu haben, z.B.: verwednet ads der volo-view umd die dwgs zu betrachten. bekommst du leider auch nur als developer eine kleine version ist in autocad integriert, da autocad intern auch diese technologie verwendet. du hast inenrhalb von autocad (z.B: VBA oder LISP) die möglichkeit zeichnungen zu verändern ohne diese zu öffnen, brauchst aber autovad dazu ------------------ ************* ...
|
In das Form Autocad VBA wechseln |
|
AutoCAD VBA : Tip: Objekte nach SendCommand manipulieren
fuchsi am 30.03.2006 um 16:10 Uhr (0)
leider hat VBA nicht die Evenst inkludiert, wie LispIn Lisp gibt es sehr wohl den Reaktor :vlr-commandCancelledIch habe mir sowas ähnliches in Lisp realisiert, im Reaktor :vlr-CommandWillStart merke ich mir ein einer globalen variable mittels (entlast) das letzte Objekt in der Datenbank.Nach dem :vlr-commandCancelled bzw :vlr-commandEnded ducrchsuche ich mit (entnext) alle dazugekommenen Elemente, und kann diese je nach Elementtyp verschieden behandeln.------------------ Ing. Anton FuchsWWW.FFZELL.AT.TC
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : VBA-Selectionset an Acadbefehl übergeben; Wie ??
fuchsi am 07.10.2005 um 12:26 Uhr (0)
du könntest eventuell diesen Umstand ausnützen, dass ein in VBA erzeugter Auswahlsatz immer der letzte in der Auswahlsatzreihenfolge ist.z.B.: Dim ss As AcadSelectionSet Set ss = ThisDrawing.SelectionSets.Add("TEST") ss.SelectOnScreen ThisDrawing.SendCommand ("(setq ss (ssget ""_P""))" & Chr(13))hier weise ich der LISP Variable ss einfach den VORIGEN Auswahlsatz zuden kannst du in autocad dann mit !ss verwendenoder gleich beim Befehl V für vorige eingeben.------------------ Ing. Anton FuchsWWW.FFZELL. ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : VBA-Selectionset an Acadbefehl übergeben; Wie ??
fuchsi am 07.10.2005 um 12:44 Uhr (0)
noch eine Antwort in Lisp ausprogrammiert(vl-load-com); Autocad Objekt holen(setq AxAcad (vlax-get-acad-object)); aktuelle zeichnung holen(setq AxDrawing (vla-get-activedocument AxAcad)); Container Selectionssets holen(setq AxSelectionsets (vlax-get AxDrawing "SelectionSets")); den in VBA erstellten Selectionset mittels dessen Namen holen(setq AxSelectionset (vlax-invoke AxSelectionsets "ITEM" "TEST3")); einen leeren Lisp Auswahlsatz erstellen(setq LispSelectionset (ssadd) i1 0); eine Schleife über alle im ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : Indirekte Adressierung
fuchsi am 18.06.2008 um 13:00 Uhr (0)
Zitat:Original erstellt von naservus03:Danke für die Info.Eigentlich geht es mir nicht direkt um die Drucker und die Layoutnames, sondern vielmehr um diese Technik allgemein:Eine Variable hat einen Wert, der eigentlich eine Variable ist, und den Wert der 2. Variablen will ich über den Wert der ersten auflösen.............Var1=AVar2=BuswX = Var2Wert = eval(X) ...oder so...Damit sollte in der Variable Wert der Wert der Variablen Var2 also B stehen.......DankeAlso so ist mir das in VBA nicht möglich (in Lis ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : VBA oder C#
fuchsi am 14.12.2012 um 10:24 Uhr (0)
Es gibt von Seiten Microsoft ausschliesslich die 32bit Version von VBA.Es ist von Seiten Mircosoft nicht geplant, diese auf 64 bit zu portieren.Damit ist VBA endgültig Tot.Die Implementierung der 32bit VBA Umgebung in ein 64bit Autocad ist eine absolute langsame und hingepfuschte Krücke, da hier beide Applikationen nicht mehr dirket miteinander sprechen können, sondern jedweilige Kommunikation übers Betriebssystem ablaufen muss.Siehe Disskusion Userform verliert Fokus im 64bit BShttp://ww3.cad.de/foren/ubb ...
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD VBA : VBA oder C#
fuchsi am 21.11.2012 um 07:21 Uhr (0)
auch doe Offive Produkte haben eine .net AddOn Schnittstelle für VisualStudio.Es ist zwar nicht ganz so einfach, wie in VBA (überhaupt wenn man ds makro Aufzeichnen gewöhnt ist) , aber ich denke Zukunftssicherer.Ich würde C#.net und unterstützend Lisp empfehlen.VBA ist definitiv so gut wie tot.
|
In das Form AutoCAD VBA wechseln |
|
AutoCAD ARX Object : C#.net Objekt laut Referenznummer finden
fuchsi am 27.02.2009 um 15:05 Uhr (0)
wie im Titel schon gesagt, suche ich eine einfache Methode, um über die Referenznummer an Objekt zu kommen (ähnlich wie Handent in Lisp)Momentan bekomme ich über den Transactionmanager den Modellbereich und gehe hier alle Objekte durch, bis das Objekt mit der gesuchten Referenznummer gefunden habe.Gibts da nichts einfacheres???
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : C#.NET Specified cast is not valid.
fuchsi am 27.04.2009 um 16:36 Uhr (0)
Wir haben in einer Managed DLL eine Routine für Lisp, die einfach ein externes Programm startet, und auf deren Beendigung wartet. (ähnlich dem Lispbefehl (startApp "notepad"), jedoch mit warten auf die Beendigung.Das funktioniert auch auf den meisten Rechnern (momentan auf ca. 40 Rechhner gestestet). leider kommt jedoch bei manchen Rechnern folgende Fehlermeldung in der Autocad BefehlszeileBefehl (startapplication "notepad") Anmerkung Notepad startet, und autocad wartet bis zum Schliessen, und dann komm ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : C#.NET Specified cast is not valid.
fuchsi am 28.04.2009 um 11:37 Uhr (0)
in einem PDF der Autodesk Univerity habe ich foglende Aussage gelesen.Code:In these examples the LISP function name is HelloWorld. When the (HelloWorld) function isrun from AutoLISP the .NET helloWorld function will be called. Notice that a ResultBuffer ispassed into the function and is returned. The ResultBuffer contains arguments that allow data tobe passed between AutoLISP and the .NET function. In AutoCAD 2008 a ResultBuffer is theonly type that can be returned. This should not be a major issue as the ...
|
In das Form AutoCAD ARX Object wechseln |