Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Polylinie Eigenschaften zuweisen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Polylinie Eigenschaften zuweisen (1230 mal gelesen)
Metallbau
Mitglied
Metallbauplaner


Sehen Sie sich das Profil von Metallbau an!   Senden Sie eine Private Message an Metallbau  Schreiben Sie einen Gästebucheintrag für Metallbau

Beiträge: 41
Registriert: 13.01.2005

erstellt am: 17. Feb. 2005 16:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen

Wie kann ich einer gewählten Polylinie neue eigenschaften zuweisen über Lisp ?
Kann mir bitte jemand das erklären oder hat da jemand schon so was ?

------------------
Danke...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13322
Registriert: 30.11.2003

.

erstellt am: 17. Feb. 2005 16:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Metallbau an!   Senden Sie eine Private Message an Metallbau  Schreiben Sie einen Gästebucheintrag für Metallbau

Beiträge: 41
Registriert: 13.01.2005

erstellt am: 17. Feb. 2005 17:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4051
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 17. Feb. 2005 17:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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 Holger
CAD 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



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2448
Registriert: 02.11.2001

Windows 7 Professional 64bit
AutoCAD Architecture 2011/2015 (deu/eng)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung

erstellt am: 17. Feb. 2005 19:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von vision an!   Senden Sie eine Private Message an vision  Schreiben Sie einen Gästebucheintrag für vision

Beiträge: 100
Registriert: 27.10.2003

AutoCAD 2015
Expresstools
Windows 10

erstellt am: 18. Feb. 2005 13:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2448
Registriert: 02.11.2001

Windows 7 Professional 64bit
AutoCAD Architecture 2011/2015 (deu/eng)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung

erstellt am: 18. Feb. 2005 14:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von mazur-ch an!   Senden Sie eine Private Message an mazur-ch  Schreiben Sie einen Gästebucheintrag für mazur-ch

Beiträge: 68
Registriert: 31.10.2008

ACAD 2014, Win 7 64Bit

erstellt am: 29. Mrz. 2012 17:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

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üsse
von einem anderen Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Informatiker(in)/Administrator(in) Netzwerk
<...
Anzeige ansehenSystemadministration, Netzwerkadministration
CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13322
Registriert: 30.11.2003

.

erstellt am: 29. Mrz. 2012 18:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Metallbau 10 Unities + Antwort hilfreich

.. ja, kann angepasst werden .. (ssget "_X" .... sollte der Schlüssel dazu sein .. einfach maq in der VLide-Hilfe drüber informieren....


------------------
  - 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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de