Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Layerschlüssel in ACAD-Mechanical

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:  Layerschlüssel in ACAD-Mechanical (995 mal gelesen)
TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 16. Jul. 2003 08:33    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!
ACad-Mechanical verwendet ein eigenes Layermanagment. Dieses
funktioniert über Layer- und Objektschlüssel (einfach mal
"amlayer" aufrufen), die mit in der Zeichnung abgespeichert werden.
Nun mein Problem : Weiß zufällig eine(r), wie man diese
Schlüsseltabelle mit eines Lisproutine auslesen bzw.
schreiben kann ?

Viele Grüße Thomas

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 16. Jul. 2003 08:38    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 TK_KE 10 Unities + Antwort hilfreich

Ich habe zwar keine Ahnung von Mecanicel, aner ich tippe mal darauf, das das genauso gemacht wird wie das anlegen von Layerständen mit dem Lman in acad (express)oder den Filtern

Was sagt denn der GC -3 eines Layers?

------------------
Gruß
CADwiesel
bin auch im Urlaub: 29.07 - 27.08

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

TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 16. Jul. 2003 09: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

Erstmal Danke, aber das meine ich nicht. Ich vermute so eine Art Tabelleneintrag wie "LAYER" "LTYPE" usw. habe aber mit den herkömmlichen Lisproutinen nichts gefunden ( vielleicht auch falsch gesucht ???). Diese Tabelle wird dann z.B. bei Bemaßung oder
Schraffur- Mittellinienbefehlen von ACAD-Mechanical genutzt.
Öffnet man die Zeichnung mal mit einem Hex ( oder auch Text-) editor findet man die Einträge. ... Ich möchte aber innerhalb eines Lispprogrammes da rankommen...
Gruß Thomas

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 16. Jul. 2003 09:50    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 TK_KE 10 Unities + Antwort hilfreich

Es ist nur verständlich, dass alle Informationen in der Zeichnung in irgendeiner Form gespeichert werden - wo auch sonnst?
Nur bringt dir das betrachten einer dwg - mit 'ne Hex-editor überhaupt nix. Du musst schließlich an die Infos per (v)lisp ran.

Ich vermute immernoch sehr stark, dass die Informationen im GC -3 enthalten sind.

Nimm mal einige Lisp's, die den auslesen, oder sich mit Layern beschäftigen und lass sie mal im debuggmodus laufen.

------------------
Gruß
CADwiesel
bin auch im Urlaub: 29.07 - 27.08

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

TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 16. Jul. 2003 10:31    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

........ dumme Frage : DXF-Codes usw sind mir ja bekannt, aber GC-3 ???? Kleiner Tipp wäre nett! (auch mit Lisp , dann spare ich mir die Arbeit ;-)  )
Gruß Thomas

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 16. Jul. 2003 12:55    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 TK_KE 10 Unities + Antwort hilfreich

Sieh dir das mal an:

(defun C:RemLayerFilters (/ eprLayFilt lstTemp lstFilters enaFilter)
  (setq eprLayFilt (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget
  (cdr (assoc 330 (entget (tblobjname "LAYER" "0"))))))))))))
  (foreach lstTemp eprLayFilt
    (if (= (car lstTemp) 360)
      (progn
        (princ lstTemp)
        (setq lstFilters (append lstFilters (list (cdr lstTemp))))
      )
    )
  )
  (if lstFilters
    (foreach enaFilter lstFilters (entdel enaFilter))
  )
  (princ)
)

(defun C ELFILTERS ( / lext-dict ldict lay_entity lay_filters filter_names);das smily ist ein c:'D'
(vl-load-com)
  (setq lext-dict
    (entget
      (vlax-vla-object->ename
        (vla-GetExtensionDictionary
          (vla-get-layers
            (vla-get-ActiveDocument
              (vlax-get-acad-object)
            )
          )
        )
      )
    )
  )
  (if (setq ldict (member (cons 3 "ACAD_LAYERFILTERS") lext-dict))
    (cdr (assoc 360 ldict))
     nil
  )
  (if ldict
    (progn
  (setq lay_entity (cdr (assoc 360 ldict)))
  (setq lay_filters (entget lay_entity))
  (while (assoc 3 lay_filters)
    (progn
      (setq filter_names (cdr (assoc 3 lay_filters)))
      (dictremove lay_entity filter_names)
      (setq lay_filters (entget lay_entity))
    )
  )
  )
    )
(princ)
)

;;; use (setq layerfilters(entget(jb:GetAcadLayerFilterDictionary)))
(defun jb:GetAcadLayerFilterDictionary (/ lext-dict ldict)
  (setq lext-dict
   (entget
    (vlax-vla-object->ename
     (vla-GetExtensionDictionary
      (vla-get-layers
       (vla-get-ActiveDocument
        (vlax-get-acad-object)
       )
      )
     )
    )
   )
  )
  (if
   (setq ldict (member (cons 3 "ACAD_LAYERFILTERS") lext-dict))
   (cdr (assoc 360 ldict))
    nil
  )
)

(DEFUN C  ELFIL();das smily ist ein c:'D'
(progn
(vl-load-com)

(defun ax:GetAcadLayerFilterDictionary (/ dict)
  (setq dict
  (member (cons 3 "ACAD_LAYERFILTERS")
   (entget
     (vlax-vla-object->ename
       (vla-GetExtensionDictionary
         (vla-get-layers
    (vla-get-ActiveDocument
      (vlax-get-acad-object)
    )
         )
       )
     )
   )
  )
  )
  (if dict
    (cdr (assoc 360 dict))
    nil
  )
)
  (entdel (ax:GetAcadLayerFilterDictionary))
)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
und das:

(defun C:list_layerstates ( / lst a b n )
  (setq a (getstring "\nLayer states to list <*>:"));setq
  (if (equal a "") (setq a "*"));if
  (setq a (strcase a));setq
  (if (setq lst (get_layerstates));setq
      (progn
       (setq n 0);setq
       (repeat (length lst)
        (setq b (nth n lst));setq
        (if (wcmatch b a)
            (princ (strcat "\n" b))
        );if
        (setq n (+ n 1));setq
       );repeat
      );progn then
      (princ "\nNo saved layer states found") 
  );if
  (princ "\n")
);defun list_layerstates

(defun get_layerstates ( / e1 xd lst lst2 lst3 a b n j)
  (setq lst (tnlist "layer"))
  (setq b (length lst));setq
  (setq n 0);setq
  (repeat b  ;;;;(length lst)
  (setq   e1 (entget (TBLOBJNAME "layer" (nth n lst)) '("RAK"))
          xd (cdr (assoc -3 e1))
        lst2 (cdr (assoc "RAK" xd))
        ;lst2 (m_assoc 1000 lst2)
  );setq
  (setq j 0);setq
  (repeat (length lst2)
   (setq a (nth j lst2));setq
   (if (or (not (equal (car a) 1000))
           (not (equal "{" (substr (cdr a) 1 1)))
       );or 
       (setq a nil)
       (progn
        (setq a (substr (cdr a) 2))
        (if (not (member a lst3))
            (setq lst3 (append lst3 (list a)));setq then
        );if
       );progn else
   );if
   (setq j (+ j 1));setq
  );repeat
  
  (setq n (+ n 1));setq
  );repeat
  
  (if lst3
      (setq lst3 (acad_strlsort lst3));setq then
  );if
  lst3
);defun get_layerstates

(defun C:del_layerstates (/      e1     xd     lst    lste   lstate
                          lstatewar     lst2   lst3   a      a1
                          b      n      za     zasta  zastate
                          )
  (setq lste      (tnlist "layer")
        lstate    (get_layerstates)
        lstatewar lstate
        za        (length lste)
        zasta     (length lstate)
        zastate   (length lstate)
        n         0
        )                               ;setq
  (repeat za
    (setq e1 (entget (TBLOBJNAME "layer" (nth n lste)) '("RAK"))
          xd (cdr (assoc -3 e1))
          ) ;_ end of setq
    (if xd
      (progn
        (setq count (/ (- (length (car xd)) 1) 5))
        (repeat count
          (setq lst (cdr (assoc "RAK" xd))
                a   (nth 0 lst)         ;(cons 1000 (strcat "{" (car lstate)));
                a1  (substr (cdr a) 2)
                b   (cons 1000 (strcat a1 "}")) ;
                )                       ;setq
          (if (member a lst)
            (progn
              (setq lst2 (reverse (cdr (member a (reverse lst))))
                    lst3 (cdr (member b lst))
                    lst  (append lst2 lst3)
                    lst  (append (list "RAK") lst)
                    xd   (subst lst (assoc "RAK" xd) xd)
                    xd   (append (list -3) xd)
                    e1   (subst xd (assoc -3 e1) e1)
                    )                   ;setq
              (entmod e1)
              (setq xd (cdr (assoc -3 e1)))
              )                         ;progn
            )                           ;if
          ) ;_ end of repeat
        ) ;_ end of progn
      ) ;_ end of if
    (setq n (+ n 1))                    ;setq
    )                                   ;repeat
  (if lstatewar
    (progn
      (princ "\n\nGELÖSCHTE STATI :\n")
      (foreach zastate lstatewar
        (princ (strcat zastate "\n"))
        ) ;_ end of foreach
      ) ;_ end of progn
    (princ "\n\nKeine Layerstati zum löschen vorhanden.\n")
    ) ;_ end of if
  (princ)
  ) ;_ end of defun


(defun tnlist ( tbna / a lst)
(if (and (equal (type tbna) 'LIST)
         (equal (cadr tbna) 16)         
    );and
    (progn
     (setq tbna (car tbna));setq
     (while (setq a (tblnext tbna (not a))); a acts as a rewind first time
      (if (not (equal 16 (logand 16 (cdr (assoc 70 a)))))
          (setq lst (append lst
                            (list (cdr (assoc 2 a)))
                    );append
          );setq
      );if
     );while
    );progn then local only
    (progn
     (while (setq a (tblnext tbna (not a))); a acts as a rewind first time
      (setq lst (append lst
                       (list (cdr (assoc 2 a)))
                );append
      );setq
     );while
    );progn else
);if
lst
);defun tnlist

------------------
Gruß
CADwiesel
bin auch im Urlaub: 29.07 - 27.08

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

TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 16. Jul. 2003 16:10    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

Danke für die Mühe....
.. aber so ganz klappts doch nicht. Kann auch an der Version liegen
(z.B  .......................

(defun get_layerstates ( / e1 xd lst lst2 lst3 a b n j)
  (setq lst (tnlist "layer"))
  (setq b (length lst));setq
  (setq n 0);setq
  (repeat b  ;;;;(length lst)
  (setq  e1 (entget (TBLOBJNAME "layer" (nth n lst)) '("RAK"))
          xd (cdr (assoc -3 e1))  ====> immer nil da -3 nicht da


Ich denke , vielleicht kommt man über "AcDbSymbolTableRecord" und
"AcDbLayerTableRecord" ran, hab aber das mit dem Auslesen noch nicht auf die Reihe bekommen


(entget (tblobjname "layer" "AM_4") )
... liefert ja z.B. ...
((-1 . <Objektname: 1aa12f0> )
(0 . "LAYER") (330 . <Objektname: 1aa0810> ) (5 . "113E")
(100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord")
(2 . "AM_4") (70 . 0) (62 . 80) (6 . "Continuous") (290 . 1) (370 . 20) (390 . <Objektname: 1aa0878> ))


Durchhangeln von
(entget(namedobjdict))); ==> alle nichtgrafischen Einträge
führte nicht zum Ziel...

noch einen Vorschlag??????????????????????

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: 4171
Registriert: 17.05.2001

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

erstellt am: 17. Jul. 2003 08:26    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 TK_KE 10 Unities + Antwort hilfreich

Hallo Thomas,

die Zeilen:
(setq  e1 (entget (TBLOBJNAME "layer" (nth n lst)) '("RAK"))
          xd (cdr (assoc -3 e1))
Fragen nur EED's der Applikation 'RAK' ab. Dies wird jedoch nicht die sein, die für das Mechanical-Layermanagement verantwortlich ist.
Nimm mal an Stelle des RAK ein *, dann werden alle EED's ausgegeben.

(setq  e1 (entget (TBLOBJNAME "layer" (nth n lst)) '("*"))
          xd (cdr (assoc -3 e1))


Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Irgendwann muß man schlafen, deshalb:
+!+!+Urlaub vom 01.08.-30.08.2003+!+!+

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

TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 17. Jul. 2003 21: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 Holger
Das mit "RAK" weglassen oder "*" hatte ich schon probiert...
mit dem gleichen Ergebnis: "nil" - vielleicht doch eine
Versionsfrage???
... zum ursprünglichen Problem : Layerverwaltung usw.
Das scheint ein "Proxy" von MECHANICAL zu sein. Kann man
"Proxys" irgentwie auslesen , oder kann das nur die geladenen
Anwendung ???? Aber da die Daten ja in der Zeichnung stehen muß
doch auch ranzukommen sein !!!! Ich bleibe dran.
Gruß Thomas

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 18. Jul. 2003 08:58    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 TK_KE 10 Unities + Antwort hilfreich

Proxys?
Schonmal die Suche bemüht? oder bei mir geckuckt? killproxy!

------------------
Gruß
CADwiesel
bin auch im Urlaub: 29.07 - 27.08

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

TK_KE
Mitglied



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

Beiträge: 67
Registriert: 15.07.2003

erstellt am: 18. Jul. 2003 13:37    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

Zitat:
Original erstellt von CADwiesel:
Proxys?
Schonmal die Suche bemüht? oder bei mir geckuckt? killproxy!



...... aber sicher doch!!!! Ich habe mich wohl auch
ein bißchen unglücklich ausgedrückt!
Also :  Die ganzen Layerschlüssel werden won der Anwendung
amglay.arx erstellt ( Bestandteil von Mechanical )und auch in der
Zeichnung mit abgespeichert. Mechanical liefert ja auch eine im
Dialog integrierte Funktion zum Importieren dieser Einstellungen
aus einer anderen Zeichnung.....
... Mit "AMlayer ..." kann ich mir die Tabelle auch ins Fenster
ausgeben lassen....
ABER ICH MÖCHTE WISSEN über welches "ENTGET" ich da so rankomme!!!
( Oder ein blöder Gedanke : kann ich mir die im Fenster
ausgegebenen Texte in eine Datei umleiten ????? )
Gruß und schönes Wochenende
Thomas

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