|
AutoCAD ARX Object : Programiersprache
alfred neswadba am 28.04.2010 um 23:37 Uhr (0)
Hi,das Block-Einfügen (solange die Positionierung händisch ausgeführt wird) ist keine Sache von Performance, damit stehen Dir alle Programmiersprachen, die AutoCAD unterstützt, zur Verfügung.Musst Du aber Blöcke, die in einer großen Menge in Zeichnung eingefügt sind, analysieren (z.B. samt Attributauswertung bestimmte Filter setzen und Aktionen damit durchführen), erst dann wird Performance ein Thema. Aber das kann ich jetzt mal aus Deiner Beschreibung nicht erkennen.LISP und VBA sind wohl am leichtesten z ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Autocad AdWindows Ribbons
alfred neswadba am 19.06.2010 um 14:53 Uhr (0)
Hi,dieses funkt bei mir, Umweg über LISP, dann klappts auch mit den Leerschritten.Code:Dim acadapp As AcadApplication = CType(ApplicationServices.Application.AcadApplication, AcadApplication)Dim tCuiFileName As String = "C:TEMPTest Dir Mit LeerschrittenISHTrim_18_00.cuix"Dim tLispStr As String = "(COMMAND ""_MENULOAD"" """ & tCuiFileName.Replace("", "/") & """)"acadapp.ActiveDocument.SendCommand("FILEDIA 0" & vbCr)acadapp.ActiveDocument.SendCommand(tLispStr & vbCr)acadapp.ActiveDocument.SendCommand("FILEDI ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Datei zum Bearbeiten öffnen
alfred neswadba am 08.07.2010 um 16:02 Uhr (0)
Hi,diese Attributsdefinition:Autodesk.AutoCAD.Runtime.CommandFlags.Sessionwird bei der Befehlsdefinition notwendig sein, wenn Documents unterschiedlich aktiviert werden sollen, sonst wirkt ein in dotNET definierter Befehl nur für ein Document und kann daher kein anderes während des Befehlsablaufs aktivieren. das stimmt ich lade Lisp und VBA automatisch zu. Ist das ein Problem? Obs eines ist, weiß ich nicht. Ich sehe das nur als Möglichkeit (durch das Vokabel Macroname) und hätte probehalber die LISPs und V ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Pause bei Sendcommand
alfred neswadba am 30.07.2010 um 13:55 Uhr (0)
Hi,ein simples Beispiel dazu: Du startest meinen Befehl CADde_PLineClosed, dieser schickt an AutoCAD den Befehl _PLINE.Diese App setzt dann, wenn der Anwender mit der Polylinienerstellung fertig ist (entspricht/ersetzt eben PAUSE in LISP) wieder fort, überprüft, ob die Polylinie geschlossen ist und wenn nicht, wird diese Polylinie geschlossen. Das entspricht dann der Fortsetzung Deines Programms, ob Du dann jetzt Explode einer Blockreference machst oder sonstwas, das Handling ist gleich.Ich habe in diesem ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Umstieg ACA2008 ACA2011
alfred neswadba am 04.08.2010 um 18:36 Uhr (0)
Hi,@Werner: Also die 2008er DLLs in ACAD 2011 ladenNee, so nicht. Denn 2008 API ist nicht kompatiblel zu 2010 API, Du kannst zwar mit einigermaßen hoher Wahrscheinlichkeit für 2008 gebaute DLLs mit 2009 (und sogar 2007) laden, aber mit 2010 gabs einen Bruch (der managed API signatures) und damit würde ich (solange man nicht nur an COM oder LISP denkt) die fehlerfreie Lauffähigkeit sehr stark bezweifeln. Vielleicht auch "Late Binding" - könnte auch gehn.Ja könnte, nur - persönliche Meinung - wer LateBinding ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Rückgabewert von Befehlen
alfred neswadba am 30.09.2010 um 17:38 Uhr (0)
Hi,wenn Du Fehlerkontrolle brauchst, dann bist Du mit SendCommand nicht gerade am besten Weg. Denn Commands in AutoCAD liefern keinen Rückgabewert.Mit dem aktuellen Verständnis, wie Deine App derzeit läuft (externe EXE, die dem AutoCAD Befehle schickt, so vermute ich mal), würden mir folgende Varianten einfallen:a) Du nutzt während des Programmablaufs die User-Variablen (z.B. USERI1), schreibst je nach Status in Deinem internen Ablauf eine Ergebnisnummer hinein, diese Variable kannst Du dann auch aufrufenb ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Doppelklick auf Attributref
alfred neswadba am 18.11.2010 um 10:43 Uhr (0)
Hi,kurz in LISP die Vorgehensweise (weils weniger Zeilen sind), wie _EATTEDIT bedient werden kann, damit das richtige Attribut im Dialog aktiviert ist:Befehl: (setq myATT (nentsel)) == da zeigst Du mal ein Attribut Deines Blocksdann:Befehl: _EATTEDITWählen Sie einen Block: !myATTRückschluß daraus: übergibst Du dem Befehlsaufruf das Attributsobjekt, dann bekommst Du das richtige Attribut. Probiers mal.In dotNET musst Du jetzt nur noch herausfinden, welches Attribut des Blocks unter dem zuletzt geklickt ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Kopierschutz mittels Abfrage der AutoCAD Lizenz
alfred neswadba am 19.11.2010 um 16:32 Uhr (0)
Hi,eine einfache Variante ist die AutoCAD-Seriennummer abzufragen und mit eine Liste zu vergleichen.Vorsicht aber, wenn Du das mit C++ machst OK, wenn Du dies aber mit dotNET machst, ist Dein Code fast frei lesbar, also kein wirklicher Schutz für Programmierer.Abfrage der Seriennummer geht über die Variable _PKSERIn Lisp als Beispiel (getvar "_PKSER")Alternative Variante kann sein, dass Du aus dem System den Namen des Domain-Controllers ausliest. Das sollte auch gültig sein, wenn Du Dich mal mit dem Laptop ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Linientyp in der ganzen Zeichnung ersetzen
alfred neswadba am 27.11.2010 um 23:13 Uhr (0)
Hi,Du kannst genauso Dir diese Methoden ansehen:DBObject.HandOverToDBObject.SwapIdWithZu finden in Help/Doc ObjectARX for AutoCAD xxxx: Managed Class Reference Guide (arxmgd.chm) unter:Autodesk.AutoCAD.DatabaseServices Namespace DBObject Class DBObject MethodsDiese haben alle ihre Berechtigung, natürlich auch Deine Methode DBObject.SwapReferences.Ich hab auch den Thread im LISP-Forum gelesen und dabei aber nicht alle Varianten erklärt gesehen, die vorkommen könnten. Z.B. Könnte die Situation vorkommen, d ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : For each-Schleife
alfred neswadba am 13.01.2011 um 12:17 Uhr (0)
Hi, Der Modellbereich ist eine Ausnahme. [...] Das geht bei mir nichtZeichne mal eine Linie im Modellbereich, dann starte folgendes LISP-Statement:(entget (car (entsel)))...und Du wirst erkennen, dass sich hinter DXF-Code 410 "Model" verbirgt, mit einem l. Lieber wäre es mir ich könnte das Layout im nachhinein herausfindenMit Entity.OwnerID (bzw. in 64bit Systemen) mit Entity.OwnerID32 kannst Du die ID des übergeordneten Objekts erkennen, das lässt dann den Rückschluss auf Modellbereich-ID oder Layout-Bl ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Befehl von Werkzeugpalette
alfred neswadba am 17.01.2011 um 08:35 Uhr (0)
Hi, wie kann ich den Code von der Werkzeugpalette aufrufen und als Vaiable einen Blocknamen Übergeben.Du rufst Deinen (dotNET-)Befehl genauso auf wie den _INSERT-Befehl und gibst den Blocknamen genauso an, wie Du einen Parameter in AutoCAD angibst.Schreibst Du für AutoCAD im Menü z.B.^C^C_INSERT;SchraubenBlock; ....oder auch....^C^C(command "_INSERT" "SchraubenBlock")Dann kannst Du zum Aufruf Deiner Funktion (ich nehme den Namen myINSERT mal an):^C^CmyINSERT;SchraubenBlock;Innerhalb Deines Codes musst Du ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Einfache polylinie erstellen
alfred neswadba am 24.01.2011 um 10:40 Uhr (0)
Hi,Du kannst Dir den Handler CommandEnded oder EnteringQuiescentState (jeweils aus dem Editor) in Deiner ersten Funktion setzen, dann in der zweiten Funktion prüfen, ob der Anwender nicht abgebrochen hat (also wirklich eine Poly erstellt hat) sowie den Handler wieder rücksetzen.Welcher der Events für Deine App besser geeignet ist, hängt von Rest Deiner App ab. Nur gleich als Vorsichtsmaßnahme (ich habs nicht probiert): Wenn Du in einer LISP-Funktion eine dotNET-App aufrufst und in dieser wiederum SendStri ...
|
In das Form AutoCAD ARX Object wechseln |
|
AutoCAD ARX Object : Lisp von c# aus laden ohne! SendStringToExecute
alfred neswadba am 17.05.2011 um 17:13 Uhr (0)
Hi,wenn Du das VL-ActiveX-Objekt verwendest, dann kannst Du direkte LISP-Statements absetzen, damit auch (load "C:/TEMP/TEST.LSP") funktionieren.Basis im Form von VBA findest Du hierHTH, - alfred -------------------www.hollaus.at
|
In das Form AutoCAD ARX Object wechseln |