| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: probleme mit offset (756 mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 20. Aug. 2004 11:04 <-- editieren / zitieren --> Unities abgeben:
Moin Moin ! ich möchte eine linien parallel zu zwei seiten versetzen - doch leider funktioniert dieses nur beim ersten mal ! ich bekomme beim abbruch immer die meldung, dass das eine ungültige auswahl für das zweite versetzen vorliegt ! und wenn ich den typ abfrage, dann bekomme ich FILE - obwohl ich nichts an der variablen (hier ename) geändert habe ! vielleicht kann mir jemand von euch einen weg aus dem wald zeigen ? ich habe meinen bisherigen gedankengang in einem kleinen beispielprogramm zusammengestellt. (defun c:test99 (/) ;; hier wird eine beispiel-linie gezeichnet (command "_.line" (list 0 0 0) (list 0 100 0) "") (setq ename (entlast)) ;;zur einen seite (command "_.offset" 1.00 ename (list 100 100 0)) ;;und zur anderen (command "_.offset" 1.00 ename (list -100 100 0)) ) ;end-defun vielen dank im voraus. gruß Jan :-)
------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 20. Aug. 2004 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
nicht probleme mit offset, sondern damit , mal einen Befehl in der Befehlszeile durchzuspielen!!! (defun c:test99 (/) (command "_.line" (list 0 0 0) (list 0 100 0) "") (setq ename (entlast)) (command "_.offset" 1.00 ename (list 100 100 0)"") (command "_.offset" 1.00 ename (list -100 100 0)"") ) ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 20. Aug. 2004 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hi, und hier mal ein Ansatz in VLisp: Code:
;; Hier nur Beispiel, keinerlei Errorhandling ;; Versetzt ein zu pickendes Objekt um ;; die in der Liste angegebenen Werte. ;; RetVal = List von Vla-Objekten die erzeugt wurden (setq objlst (MOFFSET (car (entsel)) '(1 3 7.5 10 -1 -3 -7.5 -10)))
... und auf diesen Funktionen basiert der Code oben: Code:
;; Hier nur Beispiel, keinerlei Errorhandling ;; Multioffset-Function (defun MOFFSET (ENAME OFFSETLIST /) (mapcar (function (lambda (X) (MS:CURVE-OFFSET ENAME X) ) ;_ end of lambda ) ;_ end of function OFFSETLIST ) ;_ end of mapcar ) ;;; versetzt das übergebene Objekt um den übergebenen Wert ;;; Argumente: ;;; Ename = Ename oder vla-object ;;; offset = Positives oder negatives real oder integer (defun MS:CURVE-OFFSET (ENAME OFFSET /) (setq ENAME (->VLA-OBJECT ENAME)) (if (member (strcase (VLAX*GET-PROPERTY ENAME 'OBJECTNAME)) '("ACDBARC" "ACDBCIRCLE" "ACDBELLIPSE" "ACDBLINE" "ACDBLIGHTWEIGHTPOLYLINE" "ACDBPOLYLINE" "ACDB2DPOLYLINE" "ACDBSPLINE" "ACDBXLINE" ) ) ;_ end of member (vlax-safearray-get-element (vlax-variant-value (vlax-invoke-method ENAME 'OFFSET OFFSET) ) ;_ end of vlax-variant-value 0 ) ;_ end of vlax-safearray-get-element ) ;_ end of if ) ;_ end of defun;;; Funktion gibt vla-Objekt zurück, wenn Lisp-Objekt oder vla-Objekt ;;; übergeben worden sind. Ansonsten nil (defun ->VLA-OBJECT (ENAME /) (cond ((= (type ENAME) 'ENAME) (vlax-ename->vla-object ENAME)) ((= (type ENAME) 'VLA-OBJECT) ENAME) (t NIL) ) ;_ end of cond ) ;_ end of defun ;;; Mapcar-Magie! ;;; Eigenschaftswerte aus Objekten lesen ;;; Beispiel: ;;; Layerfarbe des aktuellen Layers abfragen: ;;; (vlax*get-property nil '(Color ActiveLayer ActiveDocument)) ;;; ;;; Abfragen, ob eine Polylinie geschlossen ist: ;;; (VLAX*GET-PROPERTY (vlax-ename->vla-object (car (entsel))) 'CLOSED) (defun VLAX*GET-PROPERTY (OBJ PROPS /) (if (->VLA-OBJECT OBJ) ;_ Wenn vla-Objekt draus gemacht werden kann... (setq OBJ (->VLA-OBJECT OBJ)) ;_ mache auf jeden Fall eines draus ) ;_ end of if (if (null OBJ) (setq OBJ (vlax-get-acad-object)) ) ;_ end of if (if (and (listp PROPS) (cdr PROPS)) (vlax-get-property (VLAX*GET-PROPERTY OBJ (cdr PROPS)) (car PROPS) ) ;_ end of vlax-get-property (vlax-get-property OBJ (if (listp PROPS) (car PROPS) PROPS ) ;_ end of if ) ;_ end of vlax-get-property ) ;_ end of if ) ;_ end of defun
.. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 20. Aug. 2004 19:38 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|