Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Layer polygonaler AF setzen mit vla

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Layer polygonaler AF setzen mit vla (1224 mal gelesen)
archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 23. Mrz. 2018 13:34    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


PolygonalesAFimEF.jpg


PolygonalesAFimLM.jpg

 
Hallo Forum,

zum Setzen der Layer aller Ansichtsfenster (werden oft falsch auf irgendeinem aktuellen Layer erzeugt) mit vla wird verwendet:

Code:

(defun c:t( / BLOCK )
;(defun c:AF-auf-Layer( / BLOCK )
;alle AF auf AFLayer setzen
  (setq AFLayer "0")

  (vl-load-com)
  (vlax-for LAYOUT (vla-get-layouts(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for ITEM (setq BLOCK (vla-get-Block LAYOUT))
      (if(=(strcase(vla-get-objectname  ITEM))"ACDBVIEWPORT")
        (vl-catch-all-error-p
          (vl-catch-all-apply
            'vla-put-Layer
              (list ITEM AFLayer)
          )
        )
      )
    )
  )
  (vla-regen(vla-get-activedocument (vlax-get-acad-object)) acAllViewports)
)


Der Layer aller AF wird wie gewünscht auf "0" gesetzt.
Orthogonale AF ändern den Layer und das Aussehen (Farbe).
Polygonale AF ändern den Layer aber nicht ihr Aussehen.

Nicht nachvollziehbar:
Im Eigenschaftsfenster wird für beide Typen der geänderte Layer angezeigt.
Im Layereigenschaften-Manager wird für polygonale AF kein Layer angezeigt (s. Anlagen).
Ist das normal?
Habe ich irgend etwas übersehen bzw. erforderliche Einstellungen nicht gesetzt?

Gruß

Archi

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 23. Mrz. 2018 13:53    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 archi.archi 10 Unities + Antwort hilfreich

Das liegt daran: Eigentlich hast du ZWEI Objekte, ein rechteckiges Ansichtsfenster
und ein weiteres Objekt mit dem du das Ansichtsfenster "zuschneidest", zB. eine Polylinie.

Adesk versucht die Internas vor dem Anwender zu verstecken und zeigt dir nur das Ansichtsfenster,
intern sind aber beide Objekte markiert und der LayerDropDown zeigt NICHTS an (den im Moment hast
du zwei Objekte mit unterschiedlichen Layern markiert).

Das verstecken klappt also noch nicht soo gut.

Und jetzt kommst du noch mit Programmierung, dafür muß man dann auch wissen was hinter den Kulissen los ist.
Du solltest also prüfen ob das AF zugeschnitten ist und wenn ja, auch das zugehörige Objekt auf den Layer legen.


PS: Ich empfehle immer einen Extra-Layer für AF (und Zuschneideobjekt), so kommt niemand
auf die Idee (deswegen) den Layer0 auszuschalten - was wieder Probleme bringt.

Falls du das AF mit "falscher Farbe" siehst, dann wende doch mal diesen Ausdruck an und du wirst sehen: Es ist kein AF was du siehst.. 
(entget(car(entsel)))

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 23. Mrz. 2018 14:30    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 cadffm,

ein Extra-Layer für Af wäre gut, wird aber von unserem Aufsatz nicht unterstützt, daher Layer "0".

Die Sache mit der Zuschneideumgrenzung, da war ja noch was! Im Nicht-Programmiermodus ist das für mich optisch immer sofort nachvollziehbar!

Ist die Ermittlung des Zuschneideobjektes aufwändig, oder ist vielleicht eine auswertbare Info in den AF-Eigenschaften hinterlegt?

Gruß

Archi

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 23. Mrz. 2018 16:04    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 archi.archi 10 Unities + Antwort hilfreich

Schau dir die Objektdaten eines normalen und eines zugeschnittenen AF an,
(entget (car (entsel)) '("*"))

Und nicht das Polygon klicken, sondern das AF.

Habe aktuell keine Zeit zielgerichteter darauf einzugehen, oder aus vla Sicht.
Hoffe du kommst dennoch weiter, ansonsten noch einmal nachfragen.

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 23. Mrz. 2018 16:14    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 archi.archi 10 Unities + Antwort hilfreich

Hallo Archi,
wenn Du die Entget-Liste vom Ansichtsfenster-Objekt nimmst erhälst Du im Gruppendcode 340 die Polylinie.

könnte dann ungefähr so aussehen (ungetestet):

Code:

(if(=(strcase(vla-get-objectname  ITEM))"ACDBVIEWPORT")
  (progn
    (if (setq obj(cdr(assoc 340
        (entget(vlax-vla-object->ename ITEM)))))
      (vla-put-layer
          (vlax-ename->vla-object obj)
      AFLayer))
    (vl-catch-all-error-p
      (vl-catch-all-apply
        'vla-put-Layer
        (list ITEM AFLayer)
        )
      )
    )
  )

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Attribute freistellen Youtube

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 26. Mrz. 2018 13:53    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 Jörn,

GC 340 hatte ich schon identifiziert.

Danke für die Lösung - es funktioniert jetzt mit vla.

Code:

(defun c:AF-Layer( / BLOCK )
;alle AF auf AFLayer setzen

  (setq AFLayer "0")

  (vl-load-com)
  (vlax-for LAYOUT (vla-get-layouts(vla-get-activedocument(vlax-get-acad-object)))
    (vlax-for ITEM (setq BLOCK (vla-get-Block LAYOUT))
      (if(=(strcase(vla-get-objectname  ITEM))"ACDBVIEWPORT")
        (progn
          (if (setq obj(cdr(assoc 340 (entget(vlax-vla-object->ename ITEM)))))
            (vla-put-layer (vlax-ename->vla-object obj) AFLayer)
          ) ;if
          (vl-catch-all-error-p
            (vl-catch-all-apply
              'vla-put-Layer
                (list ITEM AFLayer)
            )
          )
        ) ;progn
      ) ;if
    )
  )
  (vla-regen(vla-get-activedocument (vlax-get-acad-object)) acAllViewports)
) ;AF-Layer


Zwischenzeitlich habe ich es ohne vla versucht:

Code:

(defun c:AF-Layer (/ ss)
;alle AF auf AFLayer setzen

  (setq AFLayer "0")

  (if
    (setq ss
          (ssget "_X"
                  '((0 . "VIEWPORT")
                    (-4 . "<NOT")
                    (69 . 1)
                    (-4 . "NOT>")
                  )
          )
    )

    (progn
      (setq i 0)
      (repeat (sslength ss)
        (setq edaten (entget (ssname ss i))) ;((0 . VIEWPORT)

        (setq edaten (subst (cons 8 AFLayer) (assoc 8 edaten) edaten)) ;Layer für Ansichtsfenster setzen
        (entmod edaten) ;funktioniert nicht bei polygonalem AF?

        ;polygonales AF?
        ;(340 . <Objektname: 23ee7a11b40>) ;Polylinie des Ansichtsfensters
        (setq poly (cdr (assoc 340 edaten)))
        (setq edaten (entget poly)) ;((0 . LWPOLYLINE)

        (if poly
          (progn
            (setq edaten (subst (cons 8 AFLayer) (assoc 8 edaten) edaten)) ;Layer für Polylinie setzen
            (entmod edaten)
          ) ;progn
        ) ;if polygonales AF

        (setq i (+ i 1))
      ) ;repeat
    ) ;progn
  ) ;if

  (princ)
) ;AF-Layer


Die Polylinie wird auf Layer 0 gesetzt, das Ansichtsfenster aber nicht. Irgendwie scheint entmode für das AF nicht zu funktionieren.
Gibt es dafür eine Ursache?

Gruß

Archi

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 26. Mrz. 2018 13:57    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 archi.archi 10 Unities + Antwort hilfreich

Kurzer Blick in die Hilfe zu ENTMOD:

You cannot use the entmod function to modify a viewport entity.

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

archi.archi
Mitglied



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

Beiträge: 77
Registriert: 08.10.2010

Windows 10
AutoCAD 2023
Revit 2023

erstellt am: 26. Mrz. 2018 16:23    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 cadffm,

danke für den Hinweis - die Fehler macht eigentlich immer der der Mensch vor dem Computer!

Mit vla ist es gelöst, also vorerst keine weiteren Probleme.

Gruß bis zum nächsten Script!ß

Archi

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)2023 CAD.de | Impressum | Datenschutz