|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung 
 | 
| Autor | Thema:  Polylinie Eigenschaften zuweisen (2019 mal gelesen) | 
 | Metallbau Mitglied
 Metallbauplaner
 
  
 
      Beiträge: 41Registriert: 13.01.2005
 |    erstellt am: 17. Feb. 2005 16:36  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 . |    erstellt am: 17. Feb. 2005 16:45  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  zum Ändern gibts die Funktion (entmode ... die Eigenschfaten sind in den dxf-Codes  verschlüsselt. Es get auch über ActiveX mittels vlax-put-property ... -> F1 im Lispeditor (ActiveX und VBA-Referenz) siehe zu dem thema auch mal auf der AFRALISP-SITE ------------------
  - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Metallbau Mitglied
 Metallbauplaner
 
  
 
      Beiträge: 41Registriert: 13.01.2005
 |    erstellt am: 17. Feb. 2005 17:05  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Cadmium  Danke für den Tipp. Vielleicht noch ein Beispiel mit dxf-Codes wäre nicht schlecht...Z.B. auf Seite 97 ist Polylinie beschrieben mit Codes-Spalte werden diese Codes im Befehl etwa so verwendet :
 (setq a (ssget "40")) ??? ------------------Danke...
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Brischke Moderator
 CAD on demand GmbH
 
         
 
  
 
      Beiträge: 4201Registriert: 17.05.2001
 AutoCAD 20XX, defun-tools (d-tools.eu) |    erstellt am: 17. Feb. 2005 17:15  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  Hallo Metallbau, deine Frage ist nur mit sehr umfangreichen Antworten korrekt zu beantworten. Das Handling ist für alle Objekte ziemlich gleich, egal ob DXF oder ActiveX. Es wäre einfacher, wenn du schreibst, was du vor hast, und wobei du die Probleme hast.
 Grüße HolgerCAD on demand GmbH           AUGCE - Manager Deutschland
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | marc.scherer Ehrenmitglied V.I.P. h.c.
 CAD-Administrator
 
 
  
 
      Beiträge: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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: 17. Feb. 2005 19:21  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  Hi Metallbau, in welchem Buch steht was auf Seite 97??? Und was hat ssget DIREKT mit dem Ändern von Eigenschaften zu tun? Um Dir einen kleine Einstieg zu verschaffen, habe ich mal ein paar kleine Funktionen gebaut die Dir eine angeklickte Polylinie auf Layer 0 legen und den DXF-Code bzw. die ActiveX Eigenschaften und Methoden anzeigen. Analog zu der Layereigenschaft kann man auch diverse andere Eigenschaften manipulieren.Am besten Du wirfst in AutoCAD mal den VisualLisp Editor an, lädst den Code und schaust Dir via Debugging Funktionen mal an was da so abgeht...
 
 Code:
 ;; Entmod Demo...
 ;; Am besten nachzuverfolgen über die VLisp-IDE
 ;; Menü: "Extras" -> "Auto Lisp" -> "Visual Lisp Editor"
 (defun C:ENTMOD-DEMO (/ PLINE-DATA PLINE-OBJ)(if (setq PLINE-OBJ (car (entsel "\nPolylinie anklicken: ")))
 (progn
 (setq PLINE-DATA (entget PLINE-OBJ))
 (if (wcmatch (strcase (cdr (assoc 0 PLINE-DATA))) "*POLYLINE")
 (progn
 ;; Nur zum Visualisieren...
 (PRIN1-LIST PLINE-DATA)
 ;; Verändern einer Eigenschaft: Hier Layer
 (if (setq PLINE-DATA (DXFMOD PLINE-DATA (cons 8 "0")))
 (PRIN1-LIST PLINE-DATA)
 (princ "\nNichts verändert...")
 )
 )
 (princ "\nKeine Polylinie angeklickt...")
 )
 )
 (princ "\nNichts angeklickt...")
 )
 (princ)
 )
 (defun DXFMOD (OBJ-LST DOTTED-PAIR-NEW / ALT RETVAL)
 (if (setq ALT (assoc (car DOTTED-PAIR-NEW) OBJ-LST))
 (setq RETVAL (subst DOTTED-PAIR-NEW ALT OBJ-LST))
 (setq RETVAL (append DOTTED-PAIR-NEW OBJ-LST))
 )
 (setq RETVAL (entmod RETVAL))
 )
 (defun PRIN1-LIST (LST /)
 (foreach ELEM LST
 (terpri)
 (prin1 ELEM)
 )
 )
 ;; ActiveX Demo... (defun C:AX-DEMO (/ ERR-OBJ PLINE-OBJ)(VL-LOAD-COM)
 (if (setq PLINE-OBJ (car (entsel "\nPolylinie anklicken: ")))
 (progn
 (setq PLINE-OBJ (vlax-ename->vla-object PLINE-OBJ))
 (if (wcmatch (strcase (vla-get-objectname PLINE-OBJ))
 "*POLYLINE"
 )
 (progn
 ;; Nur zum Visualisieren...
 (vlax-dump-object PLINE-OBJ 't)
 ;; Verändern einer Eigenschaft: Hier Layer
 (if (vl-catch-all-error-p
 (setq ERR-OBJ (vl-catch-all-apply
 'vla-put-layer
 (list PLINE-OBJ "0")
 )
 )
 )
 (alert (strcat "Fehler aufgetreten:\n\n"
 (vl-catch-all-error-message ERR-OBJ)
 )
 )
 (progn
 (princ "\nÄnderung vorgenommen...")
 (vlax-dump-object PLINE-OBJ 't)
 )
 )
 )
 (princ "\nKeine Polylinie angeklickt...")
 )
 )
 (princ "\nNichts angeklickt...")
 )
 )
 
 
 Bei Fragen beschäftigst Du Dich am besten mal mit Mapcars Lisp Tutorials (findest Du im Netz problemlos via Google) ------------------Ciao,
 Marc
 
   [Diese Nachricht wurde von marc.scherer am 17. Feb. 2005 editiert.] [Diese Nachricht wurde von marc.scherer am 17. Feb. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | vision Mitglied
 
 
   
 
      Beiträge: 113Registriert: 27.10.2003
 AutoCAD 2015Expresstools
 Windows 10
 |    erstellt am: 18. Feb. 2005 13:13  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  Hallo, ich benutze dazu dieses Lisp: (defun Init ()
 (setq
 Err *error*
 *error* Fehler
 )
 )
 (defun ReInit ()(redraw OBJEKT 4)
 (setq *error* Err)
 (princ)
 )
 (defun Fehler (s);(print (strcat "Fehler: "s))
 (ReInit)
 )
 
 (defun Lesen ()
 (progn
 (setq OBJEKT Ax)
 (redraw OBJEKT 3)
 (if(and (not(vl-catch-all-error-p
 (setq GB (vl-catch-all-apply
 'vlax-get-property
 (list (vlax-ename->vla-object OBJEKT)
 'ConstantWidth
 )
 )
 )
 )
 )
 (not(vl-catch-all-error-p
 (setq LTG (vl-catch-all-apply
 'vlax-get-property
 (list (vlax-ename->vla-object OBJEKT)
 'color
 )
 )
 )
 )
 )
 (not(vl-catch-all-error-p
 (setq LAY (vl-catch-all-apply
 'vlax-get-property
 (list (vlax-ename->vla-object OBJEKT)
 'layer
 )
 )
 )
 )
 )
 (not(vl-catch-all-error-p
 (setq LTYPE (vl-catch-all-apply
 'vlax-get-property
 (list (vlax-ename->vla-object OBJEKT)
 'linetype
 )
 )
 )
 )
 )
 )
         (Schreiben) ;Unterprogamm          )
 )
 )
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (defun Schreiben ()(while
 (princ "\n Die zu ändernde Leitung wählen!")
 (setq AUSWAHL(ssget "_:S" ))
 (setq Ax (ssname AUSWAHL 0))
 (setq Aw (entget Ax))
 (if
 (= (cdr (assoc 0 Aw)) "POLYLINE")
 
 (progn ;Polylinie
 (vl-catch-all-error-p
 (vl-catch-all-apply
 'vlax-put-property
 (list (vlax-ename->vla-object Ax)
 'ConstantWidth
 GB
 )
 )
 )
 (vl-catch-all-error-p
 (vl-catch-all-apply
 'vlax-put-property
 (list (vlax-ename->vla-object Ax)
 'color
 LTG
 )
 )
 )
 (vl-catch-all-error-p
 (vl-catch-all-apply
 'vlax-put-property
 (list (vlax-ename->vla-object Ax)
 'layer
 LAY
 )
 )
 )
 (vl-catch-all-error-p
 (vl-catch-all-apply
 'vlax-put-property
 (list (vlax-ename->vla-object Ax)
 'linetype
 LTYPE
 )
 )
 )
 )
 (progn ;wenn Linie dann zur Polylinie!
 (command "_pedit" Ax "_y" "")
 ))
 )
 )
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun C:POLYEIG (/ OBJEKT GB LTG Auswahl Aw Ax)  ;Polylinienwerte übertragen!(Init)
 (princ "\n Musterleitung auswählen!")
 (setq AUSWAHL(ssget "_:S" ))
 (setq Ax (ssname AUSWAHL 0))
 (setq Aw (entget Ax))
 (vl-load-com)
 (if (= (cdr (assoc 0 Aw)) "POLYLINE")(Lesen) ;Unterprogramme
 (progn
 (princ "\n Abbruch: Keine Leitung (Polylinie) ausgewählt!")
 (princ)
 )
 )
 )
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | marc.scherer Ehrenmitglied V.I.P. h.c.
 CAD-Administrator
 
 
  
 
      Beiträge: 2494Registriert: 02.11.2001
 Windows 10 64bitAutoCAD 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: 18. Feb. 2005 14:06  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  Hi Vision, wieso schreibst' denn alles doppelt?  Zitat:Vision schrub:
 ...(vl-catch-all-error-p
 (setq LTG (vl-catch-all-apply
 'vlax-get-property
 (list (vlax-ename->vla-object OBJEKT))
 
 ...laß das bloß den Axel (mapcar) ned' sehen :-) ------------------Ciao,
 Marc
 
   Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | mazur-ch Mitglied
 
 
  
 
      Beiträge: 77Registriert: 31.10.2008
 ACAD 2020, Win 10 64Bit |    erstellt am: 29. Mrz. 2012 17:12  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   
  Hallo zusammen Kann dieses LISP von Marc Scherrer so angepasst werden, dass nicht nur ein Objekt angewählt werden kann, sondern eine beliebige Anzahl? Anschliessend ist die Frage, ob diese Objekte automatisch durch das LISP selbst angewählt werden können (evtl. durch eine eigene Funktion, ist wahrscheinlich übersichtlicher?)? Geht dies evtl. mit SSGET oder ähnlich? Grüssevon einem anderen Marc
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
| 
  
 |  | 
 | CADmium Moderator
 Maschinenbaukonstrukteur
 
         
 
  
 
      Beiträge: 13533Registriert: 30.11.2003
 . |    erstellt am: 29. Mrz. 2012 18:35  <-- editieren / zitieren -->    Unities abgeben:           Nur für Metallbau   |