| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: größe rechteck in block mit attribut schreiben (1136 mal gelesen)
|
fitztech Mitglied Yachtinterior / Innenausbau
 
 Beiträge: 140 Registriert: 21.12.2001 Windows 7, X64 AutoCAD 2012 Intel Xeon E5530 @2,4Ghz & RAM 8GB
|
erstellt am: 18. Dez. 2006 12:36 <-- editieren / zitieren --> Unities abgeben:         
hallo, meine frage richtet sich an die lisp-freaks aus diesem forum. wir haben ein programm zu unserer cnc-fräse, welches eine dxf in eine cnc-datei schreibt. die hersteller der maschine sind zugleich auch hersteller des progamms, aber sind nicht in der lage eine möglichkeit einzubauen um die länge/breite eines rechtecks (werkstückgröße) in ein attribut eines vorher definierten blocks zu übertragen. könnte uns jemand dieses lisp (erstellt ein rechteck über das komplette objekt)... ;;; Zeichnet ein Rechteck um eine Polylinien ;;; Von Marc Scherer und Thomas aus Beiträgen von: http://www.cad.de/de.shtml ;;; Ab ACAD2000 ;; (defun C:PLBOX (/ OBJ VAR LL UR) (vl-load-com) (prompt (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160))) (if (and (setq OBJ (car (entsel))) (or (setq A (getreal (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160)"\nRandabstand <0> : "))) (setq A 0.0) ) ) (progn (vla-getboundingbox (vlax-ename->vla-object OBJ) 'LL 'UR) (setq VAR (mapcar 'vlax-safearray->list (list LL UR))) (command "_.rectang" (mapcar '- (car VAR) (list A A 0)) (mapcar '+ (cadr VAR) (list A A 0)) ) ) ) (prompt (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160))) (princ) ) (princ) ...mit der oben beschriebenen funktion erweitern? wäre super nett vielen dank schon mal im voraus viele grüße wastl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9737 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM Inventor AutoCAD 2022, AIP 4-2022 Win 10
|
erstellt am: 18. Dez. 2006 13:31 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
Das ist sicherlich (mit Schriftfeldern) kein großer Aufwand. Sollte sich jemand hier bei CAD.de unentgeltlich die Mühe machen wollen, wirde ich zumindest eine einfache Beispielzeichnung (*.dwg) hier posten, wo auch der Zielblock mit Attributen zu erkennen ist. Ach ja, noch die AutoCAD Version dazuschreiben - Ich seh gerade AutoCAD 2002 - da fallen Schriftfelder schon mal weg.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fitztech Mitglied Yachtinterior / Innenausbau
 
 Beiträge: 140 Registriert: 21.12.2001 Windows 7, X64 AutoCAD 2012 Intel Xeon E5530 @2,4Ghz & RAM 8GB
|
erstellt am: 18. Dez. 2006 16:04 <-- editieren / zitieren --> Unities abgeben:         
hallo zusammen, auch wenns nicht unentgeltlich möglich ist, dann sollte sich derjenige, der das ändern könnte einfach melden und wir werden einen weg finden.... eine musterdatei ist angehängt. das rechteck (mollte immer auf dem gleichen werkstück erstellt werden) sollte die attribute in dem eingefügten block (der block hat immer den gleichen namen und liegt auch auf dem gleichen layer) ausfüllen. wichtig ist dabei, das die länge des rechtecks mit "l=" beginnen sollte und die breite mit "b=". bei der dicke wäre es sehr hilfreich, wenn eine abfrage in der befehlszeile gemacht werden würde. wir speichern die zeichnung in dxf2000 ab und konvertieren diese dann. hoffentlich habe ich jetzt alles wichtige geschrieben. also wie gesagt, meldet euch... viele grüße wastl
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Peter Heuser Mitglied

 Beiträge: 68 Registriert: 19.02.2002
|
erstellt am: 20. Dez. 2006 22:38 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
Hallo, falls es noch nicht zu spät ist hier meine Lösung (siehe Anhang) Es sollte nur ein Block mit dem Namen "VARINC" in der Zeichnung sein. Das kleine lsp fügt auch in der linken unteren Ecke (wie im Muster) den Block ein. Wenn das nicht gewünscht ist muss es auskommentiert werden. Ansonsten....frohe Weihnachten Gruß Peter Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fitztech Mitglied Yachtinterior / Innenausbau
 
 Beiträge: 140 Registriert: 21.12.2001 Windows 7, X64 AutoCAD 2012 Intel Xeon E5530 @2,4Ghz & RAM 8GB
|
erstellt am: 21. Dez. 2006 15:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo Peter, ich danke dir für deine ausgezeichnete lösung des Problems funktioniert spitze wünsche euch allen fröhliche weihnachten und ein erfolgreiches und fröhliches neues jahr. grüße wastl Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WNJT Mitglied
 Beiträge: 6 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 24. Mai. 2023 22:26 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo Zusammen, dieses Tool PLBOX ist großartig, gibt es da auch eine Möglichkeit das der Wert ohne Nachkommastellen ausgegeben wird? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21657 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 25. Mai. 2023 01:25 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
RTOS [F1](rtos number [mode [precision]]) aus dem Programm: (rtos (- (car pt2) (car pt1))) -> nehmen wir an der Wert wäre 14.34, so steht dort (rtos 14.34) (rtos (- (cadr pt2) (cadr pt1))) dito Der Ersteller hat also auf die Angabe MODE und auch PRECISION verzichtet, dies bedeutet dann, siehe Hilfe[F1] - Es werden die aktuellen Einstellungen aus deiner Zeichnungsdatei verwendet! Schaue in der Hilfe mal nach LUPREC und LUNITS oder einfach im Dialog des Befehl EINHEIT, wo diese Einstellungen zu Einheitsformat und Nachkommastellen ebenfalls erreichbar sind. Und hier zum verstehen&testen und sollte es dann weiterhin Bedarf geben: Anpassen des Codes! Denn ich empfehle immer Luprec 8 Gebe folgendes direkt in die Befehlszeile/[F2] ein Befehl: (rtos 1.23456789) Stelle dein LUPREC um für mehr oder weniger Nachkommastellen, dann wieder Befehl: (rtos 1.23456789) Stelle Luprec auf 0 und teste das Lisp noch einmal! Klar? Dann: Befehl: (rtos 1.23456789 2 3) oder (rtos 1.23456789 2 5) oder (rtos 1.23456789 2 0) !!! Die erste 2 ist das Einheitenformat (LUNITS) und die zweite Zahl die Anzahl der Nachkommastellen (LUPREC). (rtos (- (car pt2) (car pt1))) -> (rtos (- (car pt2) (car pt1)) 2 0) (rtos (- (cadr pt2) (cadr pt1))) -> (rtos (- (cadr pt2) (cadr pt1)) 2 0)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WNJT Mitglied
 Beiträge: 6 Registriert: 12.04.2023 AutoCad 2020
|
erstellt am: 25. Mai. 2023 08:12 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
Vielen Dank für diese ausführliche Erklärung! Da bin ich wieder ein kleines Stück weiter gekommen um die Lisp Programmierung zu verstehen. Das wird mir auch bei anderen Problemchen sehr gut weiterhelfen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21657 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 25. Mai. 2023 08:27 <-- editieren / zitieren --> Unities abgeben:          Nur für fitztech
|