Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Eigenschaften von Applikations-Elementen (EED) abrufen+setzen

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
  
PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
Autor Thema:  Eigenschaften von Applikations-Elementen (EED) abrufen+setzen (2375 / 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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 23. Mrz. 2021 16: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


BARaum.jpg


BARaum.dwg

 
Hallo Spezialisten,

für Elemente einer Applikation (Berechnungen Haustechnik) möchte ich die Applikations-Eigenschaften abrufen und setzen.
Mit Applikation können jeweils nur die Werte eines gewählten Elementes geändert werden.

entget (car (entsel)) '("*")) führt leider nicht zum Erfolg.

Objekt wählen: ((-1 . <Objektname: 1f705e73b40> ) (0 . "LINDBCONTOURAREA") (330 . <Objektname: 1f705e65b70> ) (5 . "348C") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "G00_A__RAUMKONT") (62 . 1) (440 . 33554559) (100 . "linDbBaseObject") (100 . "linDbContourArea"))

Als Anlage ein Beispiel.
An der roten Fläche (Raum) müssen die nachstehenden Werte dranhängen (s. Foto): G111, N222, R333, B444, 88 und 99.

Hoffentlich kann jemand die Daten freilegen.

Jeder Hinweis ist (wie immer) willkommen!

Beste Grüße

archi

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9803
Registriert: 01.12.2003

One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11

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

Habe die Applikation von LiNear nicht im Einsatz.
Bei benutzerdef. Objekten steuert der Applikationsentwickler, wie seine Daten im Objekt gespeichert sind.
als EEds offenbar nicht.
Befehl: LISTE 1 gefunden
                  ACAD_PROXY_ENTITY  Layer: "G00_A__RAUMKONT"
                            Bereich: Modellbereich
                  Farbe: 1 (rot)    Linientyp: "VONLAYER"
                  Transparenz:50
                    Referenz = 348c
                  DXF Name:        LINDBCONTOURAREA
                  Name der Klasse:      linDbContourArea
                  Name der Anwendung: LINEAR_GMAN_DESCR

Den Object Enabler für LiNear hab ich jetzt nicht getestet.
https://www.linear.eu/de/services-media/linear-support/#c35285

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 24. Mrz. 2021 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

Hallo Udo,

vielen Dank für den schnellen Versuch.

Andere Objekte (Linien = "Rohre") werden mit EEDs angereichert.

Die Raumfläche ist also eine spezielle liNear-Klasse.
Für Wände, Fenster usw. werden von liNear ADT-Bauteile verwendet.
Könnte die Raumfläche auch aus der Ecke stammen?

Mit dem Enabler können diese Klassen leider nur angezeigt werden.

Bei mir (mit der Applikation) ergibt Befehl Liste:
                  LINDBCONTOURAREA  Layer: "G00_A__RAUMKONT"
                            Bereich: Modellbereich
                   Farbe: 1 (rot)    Linientyp: "VONLAYER"
                   Transparenz:50
                    Referenz = 348c

            LINDBCONTOURAREA

        Bauteil-Typ         : Raumkontur
        Positions-Nummer    :
        Fläche (m²)         : 6.81
        Höhenlage(m)        : 0.0000000000

Gibt es vielleicht noch irgendeine andere Möglichkeit, die Daten herauszukizzeln?

Beste Grüße

archi

[Diese Nachricht wurde von archi.archi am 24. Mrz. 2021 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 24. Mrz. 2021 09: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 Nur für archi.archi 10 Unities + Antwort hilfreich

[QUOTE]Original erstellt von archi.archi:
>>für Elemente einer Applikation (Berechnungen Haustechnik) möchte ich die Applikations-Eigenschaften abrufen und setzen.
Mit Applikation können jeweils nur die Werte eines gewählten Elementes geändert werden.

Gewagt wenn man nicht sicher alle Hintergrundfunktionen kennt, macht aber immer wieder Spaß.


>>entget (car (entsel)) '("*")) führt leider nicht zum Erfolg.
Tja, eigentlich ist der Link zum Raumblock hinterlegt, aber wenn liNear der API die Infos nicht weitergibt, pech.


>>An der roten Fläche (Raum) müssen die nachstehenden Werte dranhängen (s. Foto): G111, N222, R333, B444, 88 und 99.
Wer sagt das    , das "muss" nicht zwingend so sein.
Aber ja, eigentlich würde man einen Link zum Raumblock finden - aber die Info bekommst du wohl so herum nicht.
Im angehängten Beispiel wird der Raumstempel direkt nach der Kontur erzeugt, also
kommst du mit ENTNEXT heran, nur nehme ich an das dies durchaus auch mal anders sein kann.
(linear wird sicher auch zulassen einen gelöschten Raumstempel dann neu zu erstellen, dann passt es vllt nicht mehr)

Nur diese DWG betrachtet sind R333 und B444 dumme Attributwerte des Raumblockes, mehr nicht?.
G111 und N222 sind wie auch 88&99 im Dictionary ROOMDATA gespeichert.

-

An der Stelle mache ich Schluss 

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 24. Mrz. 2021 10:49    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,

die verlässlichen Unterstützer zum Glück hier ALLE noch im Einsatz!

Der Beschrifter hat nur dumme Attribute, d.h. diese werden beim Editieren der Fläche an den Beschrifter übertragen.

Die Richtung Attribute vom Beschrifter zur Raumfläche funktioniert leider nicht.
Die Änderung muss also über die Applikation erfolgen.

"G111 und N222 sind wie auch 88&99 im Dictionary ROOMDATA gespeichert."
Im Beschrifter-Block oder an der Fläche?

Beste Grüße

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 24. Mrz. 2021 11:03    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

Zitat:
Original erstellt von archi.archi:
"G111 und N222 sind wie auch 88&99 im Dictionary ROOMDATA gespeichert."
Im Beschrifter-Block oder an der Fläche?

ähhm. Weder noch!?
Aber du kommst vom Raumblock dorthin.

Vom Insert starten und den Einträgen folgen
-> Dict  "liNearObjectDict" 360 ->
dann weiter
-> Dict "Roomdata" 360 ->
und hier sind die vier Daten im Xrecord hinterlegt, GRuppencodes 40 40 300 300


und so weiter 

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 24. Mrz. 2021 12:56    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,

sehr guter Hinweis, das könnte funktionieren.
Vielen Dank.

Die Umsetzung wird sicher ein paar Tage dauern, da ich nun erstmal wieder meine Kenntnisse auffrischen muss!

Beste Grüße

archi

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 25. Mrz. 2021 12:20    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 Spezialisten,

nach Auffrischung meiner verschütteten Lisp-Kenntnisse konnte ich an die Werte ran:

Befehl: (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (entlast)))))))))))
((-1 . <Objektname: 1fdde289a70> ) (0 . "XRECORD") (5 . "35AF") (102 . "{ACAD_REACTORS") (330 . <Objektname: 1fdde289a60> ) (102 . "}") (330 . <Objektname: 1fdde289a60> ) (100 . "AcDbXrecord") (280 . 1) (90 . 7) (40 . 88.0) (40 . 99.0) (290 . 0) (90 . 999) (290 . 1) (90 . 1) (300 . "N222") (40 . 0.0) (40 . 0.0) (300 . "G111"))

Ich konnte noch weitere Raumparameter in ROOMDATA identifizieren.

Da in ROOMDATA Raumnummer und Raumname nicht enthalten sind, habe ich nach diesen Werten gesucht und testhalber die Attribute des Raumbeschrifters geändert.
Und siehe da: in der aktuellen Programmversion werden (anders als bisher) die Attribute an die Raumkontur geschrieben!

Das ist dann natürlich ein viel einfacherer Weg zur Gebäudestrukturierung.

Wieder etwas (Lisp) aufgefrischt und das Problem gelöst.
Zur Not könnte ich jetzt auch ROOMDATA manipulieren.

Vielen Dank und digitale Grüße

archi

[Diese Nachricht wurde von archi.archi am 25. Mrz. 2021 editiert.]

[Diese Nachricht wurde von archi.archi am 25. Mrz. 2021 editiert.]

[Diese Nachricht wurde von archi.archi am 01. Apr. 2021 editiert.]

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 28. Mrz. 2021 18: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

Hallo cadffm,

zu früh gefreut: die liNear-Applikation hat wahrscheinlich einen Fehler.

Beim manuellen Anlegen eines Raumes kann man die Attribute "G111" (Gebäudeteil) und "N222" (Nutzungseinheit) im Beschrifterblock ändern und die Werte werden dann an die Raumkontur übertragen.
Beim Anlegen von Räumen über einen Ifc-Import werden die Raumkonturen und auch ein Beschrifterblock erzeugt. Die Änderungen der Attribute dieses Beschrifterblockes werden aber nicht an die Raumkontur übertragen.

Ich muss jetzt also nicht die Block-Attribute (das wäre leicht) sondern die ROOMDATA direkt manipulieren.

Befehl: (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (entlast)))))))))))
((-1 . <Objektname: 1fdde289a70> ) (0 . "XRECORD") (5 . "35AF") (102 . "{ACAD_REACTORS") (330 . <Objektname: 1fdde289a60> ) (102 . "}") (330 . <Objektname: 1fdde289a60> ) (100 . "AcDbXrecord") (280 . 1) (90 . 7) (40 . 88.0) (40 . 99.0) (290 . 0) (90 . 999) (290 . 1) (90 . 1) (300 . "N222") (40 . 0.0) (40 . 0.0) (300 . "G111"))

Alle ROMMDATA werden angelegt, nicht aus der Ifc-Datei übernommene Attribute sind leer.
Es geht jetzt also z.B. darum (300 . "") in (300 . "N222") zu ändern.

Meine letzten Lisp-Aktionen liegen schon zu weit zurück und brauche jetzt eine Hilfe für den erforderlichen entmode-Aufruf.

Beste Grüße

archi

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 30. Mrz. 2021 14:27    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 Miteinander,

sind denn alle schon im Osterurlaub :-)?

Mein "Rost" ist etwas ab, mit:

Code:
(setq ent1 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (entlast))))))))))))
(entmod (subst (cons 300 "TEST-N222") (assoc 300 ent1) ent1))

((-1 . <Objektname: 23d043a7a70>) (0 . "XRECORD") (5 . "35AF") (102 . "{ACAD_REACTORS") (330 . <Objektname: 23d043a7a60>) (102 . "}") (330 . <Objektname: 23d043a7a60>) (100 . "AcDbXrecord") (280 . 1) (90 . 7) (40 . 88.0) (40 . 99.0) (290 . 0) (90 . 0) (290 . 0) (90 . 1) (300 . "TEST-N222") (40 . 0.0) (40 . 0.0) (300 . "G111"))



konnte ich den ersten Wert  (300 . "N222") ändern.

Wie kann ich auf den zweiten Wert  (300 . "G333") mit gleichem Gruppencode 300 zugreifen?

Sonnige Grüße

archi

[Diese Nachricht wurde von archi.archi am 30. Mrz. 2021 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 30. Mrz. 2021 14:52    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

Entweder du bastelst du eine Ordentliche Routine welche den 1. und 2. und den 3. optional immer so weiter.. findet und tauscht,
oder wenn sicher nur der erste und der letzte benötigt werden, dann nimmst du einfach assoc.
Das eine mal nimmst du die Liste wie sie ist, das andere Mal dreht du die Liste dafür einfach um REVERSE

(entmod
  (subst neu alt
      (reverse
          (subst neu alt
                    (reverse EntityList)))))

Wobei das nächste Problem bei SUBST liegen könnte, denn wenn deine 300er der Original-Liste denselben Wert haben,
dann erinnert man sich daran dass SUBST ALLE gleiche Vorkommen ändert. Daher wäre eine aufwändigere Funktion
sinnvoll.

Oserferien? Wohl nicht. Nur müde.

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 30. Mrz. 2021 15: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

Hallo cadffm,

vielen Dank!

Müdigkeit: die beliebte Sommerzeitumstellung?

reverse also bei definitev <= 2 Werten möglich.
Für > 2 Werte also ordentliche Funktion (vielleicht sicherer, wenn dann mal Programmänderungen kommen).

Kleines Problem: trotz entmode-Rückgabe (300 . "TEST-N222") ergibt ein entget leider wieder (300 . "N222")?

Beste Grüße

archi

[Diese Nachricht wurde von archi.archi am 30. Mrz. 2021 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 30. Mrz. 2021 15:29    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

>>"Müdigkeit: die beliebte Sommerzeitumstellung?"
Vielleicht auch auch müde von Jahrzehnte Mühen für nichts und jetzt einfach keinen Bock mehr - für und wegen nichts.
Zumindest trifft es auf mich zu.

>>Kleines Problem: trotz entmode-Rückgabe (300 . "TEST-N222") ergibt ein entget leider wieder (300 . "N222")?
Sowas gibts, irgendwas mag Acad dann nicht, abr ob dies an einem korrigierbaren Fehler deinerseits liegt
oder in der Natur der Sache (dazu müßte ich selbst testen oder nachsehen), das kann ich dir auch nicht sagen
ohne entsprechendes 1:1 Testmaterial (DWG/CODE).

Wie sagte ich Anfangs: Gewagt wenn man nicht sicher alle Hintergrundfunktionen kennt, macht aber immer wieder Spaß. 

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 30. Mrz. 2021 15:46    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

"Keinen Bock mehr" dann vielleicht viel in die Sonne!

Ich versuche es erst einmal selbst (Spaß haben und evtl. kurz vor dem Ziel!). Falls es doch nichts wird, stelle ich das Testmaterial hier rein.

Ordentliche Funktion heißt: die gesamte Liste um die fehlenden Werte ergänzen und dann entmod?

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 31. Mrz. 2021 13:59    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


BAZonierung.dwg


Test_Zonierung.lsp

 
Hallo cadffm,

bis zur Manipulation der ROOMDATA habe ich mich vorgearbeitet.

Bitte versuchen, die ROOMDATA zu schreiben. Mir fehlt hier irgendwie die Idee und die Technologie.

Im Voraus vielen Dank.

Beste Grüße und immer abnehmende Mühdigkeit

archi

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 01. Apr. 2021 10: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


Test_Zonierung.lsp

 
Hallo Miteinander,

Code verbessert ergänzt um entmod.

Bitte erbarmt sich jemand und versucht, ob die Daten geändert werden!

Bei mir will es nicht so recht funktionieren. Bremst die liNear-Applikation das Ändern ihrer Daten?

Beste Grüße

archi

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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 07. Apr. 2021 18: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 archi.archi 10 Unities + Antwort hilfreich

Hallo Archi,
ich hatte Deinen Code mal auf die Schnelle gestestet und den Eindruck, dass pro Durchlauf beim ENTMOD immer neue Einträge ins Dictionary gekommen sind, kann das sein? Aus Zeitgründen haben ich das nicht weiterverfolgt.

Weil ich aber noch ungeübt bei Dictionary's bin und einfach mal anhand dieses Beispiels probieren wollte habe ich es Alternativ mit VLA-Kram probiert (das scheint mir eifacher als das ganze Entpacken der 360er-Codes). Vielleicht kannst Du Dir aus der Testfunktion ein paar Erkenntnisse rausziehen. Im Prinzip habe ich zu Beginn eine Liste erstellt, in der immer der zu ändernde Wert und die Positionsnummer im Dictionary stehen. In der Funktion wird das Dictionary aktualisiert und die Attribute werden angepasst.
Allerdings habe ich noch gegrübelt, ob es "linear" aus dem Tritt bringt, wenn man die Daten einfach so ändert? Das mußt du prüfen falls Du es so machst.

Code:

(defun c:testDict ( / DICTVALLIST LISTE NAME OBJ TYP VAL VALNEW VLA-ATTLIST VLA-OBJ X)
  (setq Name "ROOMDATA"
        liste '((7 "N1234" "APARTNAME")
                (10 "G1234" "BUILDINGPART")))
  ;;;liste (NTH-Pos, neuer Wert, ATTNAME)
 
 
  (if (and(setq obj (car(entsel "\nRaumbeschrifter waehlen:")))
          (or(= "INSERT" (cdr(assoc 0 (entget obj))))
            (alert "Das war kein Block."))
          (setq vla-obj (vlax-ename->vla-object obj))
          (or
            (setq vla-AttList (JBf_list_att_aus_block_vla-obj vla-obj))
            (alert "Es sind keine Attribute vorhanden."))
          )
         
         

    (vlax-for ITEM (vla-getExtensionDictionary (vlax-ename->vla-object obj))
      (vlax-for ITEM1 ITEM
        (if (= (vla-get-Name ITEM1)Name)
          (progn
            ;;;Dictdaten getten
            (vla-getxrecorddata ITEM1 'typ 'val)
            (setq DictValList(mapcar '(lambda(X)(list (vlax-variant-type X)
                                                      (vlax-variant-value X)))
                              (vlax-safearray->list val)))

            ;;;Dictdaten: Werte anpassen
            (mapcar '(lambda(X)
                      (setq DictValList (JBf_list:nth:change
                                          DictValList
                                          (list (car(nth (car X) DictValList))(cadr X))
                                          (car X)))
                      )liste)
            ;;;Dictdaten setten
            (setq valNew
                  (vlax-safearray-fill (vlax-make-safearray
                                  vlax-vbVariant
                                  (cons 0 (-(length DictValList)1)))
              (mapcar '(lambda(X)
                        (vlax-make-variant (cadr X)(car X)))DictValList)))
            (vla-SetXRecordData ITEM1 typ valNew)

            ;;;Attribute anpassen
            (mapcar '(lambda(X)
                      (if (assoc (strcase (caddr X))vla-AttList)
                        (vla-put-TextString (cadr (assoc (strcase(caddr X))vla-AttList))(cadr X))
                        )
                      )
              liste)
            )
          )
        )
      )
    )
  (princ)
  )
 

(defun JBf_list_att_aus_block_vla-obj(vla-obj / A)
  (if (=(vla-get-hasattributes vla-obj):vlax-true)
    (mapcar '(lambda(A)(list(strcase(vlax-get A 'TagString))A))
      (vlax-safearray->list (vlax-variant-value(vla-getattributes vla-obj))))
  ))


  (defun JBf_list:nth:change(liste EintragNew pos / n )
  (setq n -1)
  (mapcar '(lambda (A)
            (setq n (+ n 1))
            (if (= n pos)
              EintragNew
              A))liste))




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

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

Bosse_tools-Überblick

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 07. Apr. 2021 19: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

Hallo Jörn,

vielen Dank für den neuen Ansatz. Da wird dann der Unterschied vom Gelegenheits-Programmierer zum Profi deutlich sichtbar!
Eigentlich bin ich der Nutzer, der nur Hand anlegt, weil der Hersteller sehr nützliche Funktionen nicht programmiert.

Ich werde in den nächsten Tage den Code testen und versuchen, ihn nachzuvollziehen. Bei Problemen oder Erfolg geht es hier dann weiter.

Bei ENTMOD immer neue Einträge hatte ich manchmal auch, aber nicht immer. Die Reaktion von liNear werde ich natürlich argwöhnisch im Auge behalten!

Beste Grüße

archi

[Diese Nachricht wurde von archi.archi am 07. Apr. 2021 editiert.]

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 09. Apr. 2021 10:49    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,

nach dem Test deines Codes ergeben sich fabelhafte Ergebnisse!
Damit wird der Code in das "Große Ganze" eingebaut und führt zum gewünschten Ergebnis (liNear hat kein Problem mit der Manipulation).
Ich würde nicht behaupten, die Einzelheiten verstanden zu haben, aber es funktioniert und kann dann an evtl. Programmänderungen angepasst werden.
Vielen, vielen Dank!

Ein kleines Problem ist noch zu Lösen:
Durch den Programm-Fehler (keine Kopplung zw. Raumkontur und Beschrifter bei IFC-Import) muss ich leider (bis zur angeforderten Programmkorrektur) alle Raumbeschrifter durchlaufen, den Befehl "Raumdaten editieren" aufrufen und das sich öffnende Fenster jeweils mit Enter beenden (ja, schöne Krücke, aber dann erfolgt die Kopplung).

Habe bisher im Forum dazu nichts gefunden. Wie kann das Problem gelöst werden?

Beste Grüße

archi

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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 09. Apr. 2021 13:46    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,
ich habe Dir meine Testfunktion nochmal in eine REPEAT-Schleife gepackt. Es wird ein Auswahlsatz mit Blöcken gebildet, alle im Auswahlsatz werden dann in der Schleife durchlaufen. Prüf mal, ob Du damit weiterkommst.


Code:

(defun c:testDict1 ( / DICTVALLIST LISTE NAME OBJ TYP VAL VALNEW VLA-ATTLIST VLA-OBJ X N AWS ERRORAWS)
  (setq Name "ROOMDATA"
        liste '((7 "N1234" "APARTNAME")
                (10 "G1234" "BUILDINGPART")))


 
  ;;;liste (NTH-Pos, neuer Wert, ATTNAME)


  (if (setq aws (ssget (list (cons 0 "INSERT")(cons 2 "B_RA+GT+NE_HK"))))
  ;;;(der Filter in GC 2 für den Blocknamen kann z.B. auch "B_*" heißen, Jokerzeichen sind hier erlaubt)

    (progn
      (setq n 0)
      (setq ErrorAws (ssadd))
      (repeat (sslength aws)
(setq obj (ssname aws n))
(setq vla-obj (vlax-ename->vla-object obj))
(if (not(setq vla-AttList (JBf_list_att_aus_block_vla-obj vla-obj)))
  (ssadd obj ErrorAws)
  (vlax-for ITEM (vla-getExtensionDictionary (vlax-ename->vla-object obj))
    (vlax-for ITEM1 ITEM
      (if (= (vla-get-Name ITEM1)Name)
(progn
  ;;;Dictdaten getten
  (vla-getxrecorddata ITEM1 'typ 'val)
  (setq DictValList(mapcar '(lambda(X)(list (vlax-variant-type X)
    (vlax-variant-value X)))
(vlax-safearray->list val)))

;;;Dictdaten: Werte anpassen
(mapcar '(lambda(X)
  (setq DictValList (JBf_list:nth:change
      DictValList
      (list (car(nth (car X) DictValList))(cadr X))
      (car X)))
  )liste)
;;;Dictdaten setten
(setq valNew
      (vlax-safearray-fill (vlax-make-safearray
      vlax-vbVariant
      (cons 0 (-(length DictValList)1)))
(mapcar '(lambda(X)
    (vlax-make-variant (cadr X)(car X)))DictValList)))
(vla-SetXRecordData ITEM1 typ valNew)

;;;Attribute anpassen
(mapcar '(lambda(X)
  (if (assoc (strcase (caddr X))vla-AttList)
    (vla-put-TextString (cadr (assoc (strcase(caddr X))vla-AttList))(cadr X))
    )
  )
liste)
)
      )
    )
  )
)
(setq n (+ n 1))
)
      )
    )

  (if (/=(sslength ErrorAws)0)
    (progn
      (alert "Sie haben Blöcke ohne Attribute ausgewählt, diese Blöcke werden abschließend selektiert.")
      (sssetfirst ErrorAws ErrorAws)
      )
    )
   
      (princ)
  )
 

(defun JBf_list_att_aus_block_vla-obj(vla-obj / A)
  (if (=(vla-get-hasattributes vla-obj):vlax-true)
    (mapcar '(lambda(A)(list(strcase(vlax-get A 'TagString))A))
      (vlax-safearray->list (vlax-variant-value(vla-getattributes vla-obj))))
  ))


  (defun JBf_list:nth:change(liste EintragNew pos / n )
  (setq n -1)
  (mapcar '(lambda (A)
            (setq n (+ n 1))
            (if (= n pos)
              EintragNew
              A))liste))


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

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

Bosse_tools-Überblick

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 09. Apr. 2021 14:16    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,

Danke, fast zu viele Geschenke! Ich teste es.

Hast du hierfür vielleicht noch einen Tip:
"Befehl "Raumdaten editieren" aufrufen und das sich öffnende Fenster jeweils mit Enter beenden"

Oder geht es nicht mit Lisp?

Beste Grüße

archi

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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 09. Apr. 2021 14:40    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,
den Befehl "Raumdaten editieren" kenne ich so nicht, wo kommt der denn her? Gibt es den in Befehlszeilenversion? Ist der von Architecture?
Vielleicht liest ja noch einer mit, der den Befehl kennt.

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

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

Bosse_tools-Überblick

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 09. Apr. 2021 15:47    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


rd.jpg

 
Hallo Jörn,

ist ein liNear-Befehl - öffnet das Fenster mit den Raumdaten (s. Anlage).
Muss mit Enter sofort wieder geschlossen werden.
(Die Anpassung des Programm-Fehlers dauert erfahrungsgemäß Wochen oder Monate,daher die Krücke.)

Beste Grüße

archi

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: 109
Registriert: 08.10.2010

Windows 11
AutoCAD 2024
Revit 2024

erstellt am: 12. Apr. 2021 12: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

Hallo Jörn,

dein letztes Skript funktioniert auch sehr gut mit einer Blockauswahl.

Zum Glücklichsein brauche ich nur noch das Schließen des Fensters.

Beste Grüße

archi 

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: 1766
Registriert: 11.10.2004

Window 11
ACAD 2021
CIVIL 2021
BricsCAD ab V14
11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz
32.0GB RAM
NVIDIA GeForce MX450<P>

erstellt am: 12. Apr. 2021 15:25    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,
ich drück die Daumen, ich weiß da im Moment auch keine Tipp.

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

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

Bosse_tools-Überblick

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