| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA RTX PRO 6000 Blackwell Max-Q Workstation Edition, eine Pressemitteilung
|
Autor
|
Thema: Konstruktionslinien versetzen von einer Linie in einem Block (1409 mal gelesen)
|
CAD-Tötti Mitglied
 
 Beiträge: 116 Registriert: 27.09.2003 ACAD 2009
|
erstellt am: 19. Okt. 2003 11:28 <-- editieren / zitieren --> Unities abgeben:         
HI@ALL, heute hab ich folgende Probleme :-): 1) Ich möchte eine Konstruktionslinie (xline) versetzen von einer Linie, die sich in einem Block befindet. 2) Alle XLINES sollen bereits bei der Erstellung auf einem bestimmten Layer liegen, dafür bin ich vorgegangen wie in der Antwort von Holger Brischke (Achtung Werbung: www.defun.de :-)) auf das gleiche Problem mit Bemaßungsbefehlen -> siehe folgenden Beitrag: http://ww3.cad.de/foren/ubb/Forum145/HTML/000261.shtml. Ich habe mir einen Reactor geschrieben für den Befehl XLINE. Jedoch funktioniert das nicht so wie bei der Bemaßung, ich habe auch _XLINE ausprobiert. Wer kann mir da helfen, wer hat sowas irgendwo schon mal gesehen ? Grüße CAD-Tötti :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 20. Okt. 2003 09:27 <-- editieren / zitieren --> Unities abgeben:          Nur für CAD-Tötti
also das mit den raktoren ist so am einfachsten dabei müssen jedoch die einzelnen layer bereits vorhanden sein ventuell vorlagenzeichnung (vlr-remove-all :vlr-editor-reactor) (vlr-editor-reactor nil '((:vlr-commandWillStart . MyCommandWillStart) (:vlr-commandEnded . MyCommandEnded) (:vlr-commandCancelled . MyCommandEnded) ) ) (defun MyCommandWillStart (reactor value / ) (setq value (car value)) (cond ((= value "XLINE") (setvar "CLAYER" "XLINE")) ((= value "BEM") (setvar "CLAYER" "BEM")) ) ) (defun MyCommandEnded (reactor value / ) (setvar "CLAYER" "0") ) dein problem mit der xline parallel zu einer linie innerhalb eines blockes muss ich mir erst überlegen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Tötti Mitglied
 
 Beiträge: 116 Registriert: 27.09.2003 ACAD 2009
|
erstellt am: 20. Okt. 2003 18:55 <-- editieren / zitieren --> Unities abgeben:         
|
CAD-Tötti Mitglied
 
 Beiträge: 116 Registriert: 27.09.2003 ACAD 2009
|
erstellt am: 20. Okt. 2003 19:05 <-- editieren / zitieren --> Unities abgeben:         
|
Brischke Moderator CAD on demand GmbH
       

 Beiträge: 4201 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 20. Okt. 2003 20:47 <-- editieren / zitieren --> Unities abgeben:          Nur für CAD-Tötti
Hallo CAD-Tötti, ob ein Layer vorhanden ist kannst du mit (tblobjname..) prüfen. Siehe dazu dort: http://ww3.cad.de/foren/ubb/Forum145/HTML/000261.shtml Einen Layer erzeugen solltest du innerhalb eines Reactors mit (entmake ..) Das könnte dann so aussehen:
Code:
(entmake (if (< 14 (atoi(substr (getvar "acadver") 1 2)));AutoCAD-Version abfragen (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 ltbs_name);Name als String '(70 . 0) (cons 62 ltbs_color);Farbe als Int (cons 6 ltbs_ltyp);Linientyp als String (cons 290 ltbs_prn);ab R15 (2000) erst möglich 0 oder 1 '(370 . -3) ) (list '(0 . "LAYER") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLayerTableRecord") (cons 2 ltbs_name);Name als String '(70 . 0) (cons 62 ltbs_color);Farbe als Int (cons 6 ltbs_ltyp);Linientyp als String '(370 . -3) ) ) )
Bei Fragen ... Grüße Holger
------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD NEU: AutoLISP- Projektschulung NEU: Praxisorientierte Schulungen und Workshops durch die bekannten CAD.de Moderatoren AutoCAD, AutoCAD LT, AutoCAD Mechanical, Mechanical Desktop, Architectural Desktop Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 21. Okt. 2003 08:25 <-- editieren / zitieren --> Unities abgeben:          Nur für CAD-Tötti
habe das ganze so ergänzt , dass die layer automatisch erstellt werden, falls sie nicht vorhanden sind mit dieser zeile kannst du nun für alle möglichen autocad-befehle layer festlegen z.B.: beim start vom befehl circle (kreis) sold der layer KREISLAYER mit der farbe 7 als aktuell eingestellt werden ((= value "CIRCLE") (setlayer "KREISLAYER" 7)) nuin das vollständige neue lisp (vlr-remove-all :vlr-editor-reactor) (vlr-editor-reactor nil '((:vlr-commandWillStart . MyCommandWillStart) (:vlr-commandEnded . MyCommandEnded) (:vlr-commandCancelled . MyCommandEnded) ) ) (defun MyCommandWillStart (reactor value / ) (setq value (car value)) (cond ((= value "XLINE") (setlayer "XLINE" 6)) ((= value "BEM") (setlayer "BEM" 3)) ((= value "CIRCLE") (setlayer "KREISLAYER" 7)) ((= value "LINE") (setlayer "LINIENLAYER" 7)) ) ) (defun MyCommandEnded (reactor value / ) (setvar "CLAYER" "0") ) (defun setlayer ( layer farbe / ) (if (not (tblsearch "LAYER" layer)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 layer) (cons 70 0) (cons 62 farbe) ) ) ) (setvar "clayer" layer) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |