Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  PTC Creo Elements/Programmierung
  Wie bekomme ich alle am Bildschirm angezeigten Teile in eine Liste? Aber keine BG.

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:   Wie bekomme ich alle am Bildschirm angezeigten Teile in eine Liste? Aber keine BG. (359 mal gelesen)
Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 09. Nov. 2017 15:48    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, ich habe mal wieder ein Problem, ...

in einem LISP möchte ich alle Teile die am Bildschirm angezeigt werden in einer Liste aufnehmen, um diese dann über ein dolist einzeln abzuarbeiten.

Ich habe es versucht mit:

(setf Darstellungsliste (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp)))

In dieser Liste befindet sich zwar die aktuell selektierten Teile und Baugruppen in der Darstellungsliste, jedoch brauche ich beim Abarbeiten
(dolist (Einzelteil Darstellungsliste) eben nur Teile für die folgenden Befehle und keine Baugruppen.

Ich kann aber nicht einfach abfragen ob es eine Baugruppe ist und dann weg lassen, weil ich ja die darin enthaltenen Teile auch brauche, egal ob die dann erst im 10 Unterordner auftauchen oder nicht.
Wie bekomme ich die komplette Liste mit den enthaltenen Teilen?

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

highway45
Moderator
Bastler mit Diplom




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

Beiträge: 6075
Registriert: 14.12.2004

CoCreate Modeling V18 + PE6
NotePad++

erstellt am: 10. Nov. 2017 08: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 Nur für Seele 10 Unities + Antwort hilfreich

Hi Wolfgang,

ich weiß nicht, ob das für deine Situation eine Möglichkeit wäre:

wir benutzen manchmal "Teilegruppe" aus dem Bereich "Formelement" um verschiedene Teile gemeinsam auszuwählen.

Damit kann man zum Beispiel in Konfigurationen positionieren ohne Einzelauswahl oder ohne eine Baugruppe zu bilden.
Welche Einzelteile in dieser Gruppe zusammengefaßt werden sollen, muß man natürlich vorher auswählen.
http://ww3.cad.de/foren/ubb/uploads/highway45/teilegruppe.jpg

------------------

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

Jörg Reutter
Mitglied
Konstrukteur


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

Beiträge: 122
Registriert: 27.09.2001

Win7 64bit 8GB Ram
OSM, OSD, MM 18.1

erstellt am: 10. Nov. 2017 09: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 Nur für Seele 10 Unities + Antwort hilfreich

Hallo Wolfgang,

vielleicht hilft dir das ein Stück weiter:

http://osd.cad.de/lisp_3d_20.htm

Das speichert die Ansichtsliste in ein Textfile.

Gruß, Jörg

------------------
Alle sagten, das geht nicht!
Dann kam einer, der wusste das nicht und machte es.

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 10. Nov. 2017 10: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

Danke für die Antworten, ...

leider helfen mir diese beiden nicht weiter.

Die Variante von Matthias mit den Teilegruppen kannte ich schon, aber ist innerhalb meines LISP nicht anzuwenden, da es vorher schon erzeugt gewesen sein müsste.

Die Auswahl wird aber erst mit dem Makro dargestellt, indem man per Klick hinzu bzw. abwählen kann durch verschiedene Auswahlkriterien.

Ist dies dann abgeschlossen, soll die eigentliche Arbeit geschehen, ich möchte den Teile der getroffenen Auswahl, welche jetzt sichtbar sind verschiedene Eigenschaften zuweisen. z.B. Farbe, Dichte u.s.w.

Hierfür brauche ich aber die Liste der Teile am Bildschirm und keine Baugruppen, damit ich die DOLIST abarbeiten lassen kann.

der Befehl (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp)) der auch in dem Makro verwendet wird, auf dass mich Jörg hingewiesen hat, welches die Einstellungen der Darstellungsliste abgreift, funktioniert zwar für die Darstellungsliste selbst, jedoch nicht für mein Makro, weil ich darin keine Baugruppen gebrauchen kann, sondern nur die Teile, weil beim Ablauf der Doliste sonst z.B der Baugruppe die Farbe rot zugewiesen wird und ich Fehlermeldungen bekomme weil das ja auch nicht geht und nicht gewünscht ist.

Baugruppe weglassen wäre falsch, weil dann ja Teile fehlen würden.

Wie kriege ich, wenn ich die Liste über (setf Darstellungsliste (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp))) erzeugt habe, welche ja Baugruppen und Teile enthält, eine neue Liste, in der alle Baugruppen verschwunden sind und dafür die darin enthaltenen Teile mit angezeigt werden? Das ist mein Problem.

Momentan fällt mir nur ein, die Teile nochmal nachträglich über eine Fensterauswahl einzusammeln und nur :parts zu nehmen, was doch aber eigentlich quatsch ist, wenn er doch einfach alle Teile vom Bildschirm nehmen könnte.

Das Problem ist ja nur, das (sd-inq-vp-drawlist-objects (oli::sd-inq-current-vp)) sobald alle Teile einer Baugruppe gewählt wurden, nicht mehr die Einzelnen Teile aufgeführt sind, sondern nur die Baugruppe.

Kennt vielleicht jemand einen Ausweg aus diesem Kreislauf?

Gruß Wolfgang :wink:

Trotzdem vielen Dank für die Hilfsversuche, ...

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2870
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 10. Nov. 2017 13: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 Seele 10 Unities + Antwort hilfreich

Wenn mich meine Erinnerung nicht sehr trügt, kann man von jedem Objekt seinen Typ erfragen und das dann benutzen, um die Liste zu filtern.

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 10. Nov. 2017 14: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

Das mit dem Erfragen würde funktionieren, die Problematik dabei ist, wenn ich die Kinder der Baugruppe ermittle, kann das ja wieder eine Baugruppe sein, bzw. ein Teil oder auch beides und wieviele Ebenen dass dann runter geht, weis ich nicht. 

Also kann ich auch keine konkrete Zahl von If-Bedingungen reinpacken, weil ich vorher schlicht nicht weis, wie die Baumstruktur zu meinen Teilen am Bildschirm aussieht. Also laufe ich auf diesem Wege mit meinem begrenzten Wissen immer wieder in Fehlermeldungen rein, weil ich schlicht keine Ahnung habe wie ich das Schleifentechnisch auf die Reihe kriegen soll.

Vielleicht sind ja auch schlicht meine LISP Kenntnisse noch zu begrenzt für dieses Problem, oder ich sehe den Wald vor lauter Bäumen nicht.

Oder es gibt noch einen anderen Befehl um die Teile des VP zu ermitteln, den ich noch nicht kenne.

Trotzdem vielen Dank für jeden Ratschlag, ...

Gruß Wolfgang

PS: Vorläufig habe ich das Problem gelöst, indem ich über Kastenauswahl die Teile am Bildschirm erneut abfrage, obwohl ich da ja eigentlich einfach alle will. So ein Computer sollte das schon selbst erkennen, um Klicks zu sparen, ... 

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2870
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 10. Nov. 2017 18: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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Seele:
Das mit dem Erfragen würde funktionieren, die Problematik dabei ist, wenn ich die Kinder der Baugruppe ermittle, kann das ja wieder eine Baugruppe sein, bzw. ein Teil oder auch beides und wieviele Ebenen dass dann runter geht, weis ich nicht.      

Das musst Du gar nicht wissen - dafür gibt es Rekursion.

Ein (relativ fortgeschrittenes) Beispiel dafür findest Du in meinem Blog unter http://www.clausbrod.de/Blog/DefinePrivatePublic20150404FlacheHierarchien. In Deinem Anwendungsfall könnte man die Rekursion sicher sehr viel einfacher gestalten.

Und noch einfacher geht es, wenn man die Rekursion von IKIT-Funktionen erledigen lässt, zum Beispiel get_selection. Siehe dazu meinen Artikel unter http://www.clausbrod.de/CoCreateModeling/MacroGetSelection


------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 10. Nov. 2017 editiert.]

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

Walter Geppert
Moderator
Frank und Frei




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

Beiträge: 2040
Registriert: 12.12.2000

Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 19.0, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf
HP EliteBook 8770w, Windows 7 Professional

erstellt am: 10. Nov. 2017 22: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 Nur für Seele 10 Unities + Antwort hilfreich

Wir sind in der wunderbaren Welt von LISP also eigentlich ganz einfach:
Wie so oft ungetestet aber wohl funktionierend:
Code:

(setf teileliste (remove-if-not :test #'sd-inq-part-p darstellungsliste))

------------------
meine LISP-Makros sind auf osd.cad.de Disclaimer
Grüße aus Wien

Walter

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1548
Registriert: 27.03.2003

● PEnix@home
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 13. Nov. 2017 17:39    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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Walter Geppert:
Wir sind in der wunderbaren Welt von LISP also eigentlich ganz einfach:
Wie so oft ungetestet aber wohl funktionierend:

Eine schoene Lisp Zeile zum "spicken". 

Aber in diesem Fall wuerde Wolfgang ja alle Teile der komplett(!) sichbaren Baugruppen verlieren, wie er oben selber schon beschrieben hat.

___________________________________________________________________


Wolfgang, du kommst wohl nicht drum die Drawlist einmal durchzunudeln. pseudo CODE

Code:
(setq partsOnly nil)
(dolist (a-item Darstellungsliste)
(when (SD-INQ-ASSEMBLY-P a-item)
   (nconc partsOnly (get_selection *sd-part-seltype* :select :in-assembly a-item :recursive)))
(when (SD-INQ-PART-P a-item)
   (push a-item partsOnly))
;; workplanes and other stuff is ignored!
)

Deine Workplanes willst du ja auch nicht erröten lassen, oder?

Statt eine neue Liste komplett zu erstellen koenntest Du natuerlich auch gleich Deine lokale funktion (mach-mal-die-Eigenschaften one-part) entsprechend aufrufen. Die kann dann auch auf read-only parts achten, sodass man das nicht auch noch vorab wegfiltern muesste.
------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

[Diese Nachricht wurde von der_Wolfgang am 13. Nov. 2017 editiert.]

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 14. Nov. 2017 07:43    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


Kuhlungen.pkg


SW-Teile-Schuetzen-neu.lsp

 
Hallo Wolfgang, ...

danke für deinen Code, ...

ich habe ihn in diesem Makro mal eingebaut und getestet,...

folgende Fehlermeldung erhalte ich: Sie haben einen unerwarteten Wert eingegeben. 

Ich hab das Makro und eine kleine Baugruppe zum testen angehängt, ...

Ich versuche mal den Code zu verstehen, ...

(setq partsOnly nil)  => leert Variable

(dolist (a-item Darstellungsliste) => Schleife arbeitet meine Darstellungsliste ab
(when (SD-INQ-ASSEMBLY-P a-item) => Wenn Element eine Baugruppe dann, ...
  (nconc partsOnly (get_selection *sd-part-seltype* :select :in-assembly a-item :recursive))) => hänge die Teile in der Baugruppe hinten an der Liste an
(when (SD-INQ-PART-P a-item)=> Wenn Element ein Teil, ...
  (push a-item partsOnly)) => füge es vorne an der Liste zu
;; workplanes and other stuff is ignored!

Also sollte am Ende partsOnly die Liste mit allen Teilen sein, ...

Ist es möglich dass diese Codezeilen noch das Problem haben, wenn unterhalb der Baugruppe wieder Baugruppen stehen?

)

Gruß Wolfgang 

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1548
Registriert: 27.03.2003

● PEnix@home
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 14. Nov. 2017 13: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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Seele:
folgende Fehlermeldung erhalte ich: Sie haben einen unerwarteten Wert eingegeben.  

Ich versuche mal den Code zu verstehen, ...
Also sollte am Ende partsOnly die Liste mit allen Teilen sein, ...

Ist es möglich dass diese Codezeilen noch das Problem haben, wenn unterhalb der Baugruppe wieder Baugruppen stehen?


Das mit dem " Code verstehen"  hat prima geklappt! 

partsOnly wuerde man natuerlich im (let (...) block der lokalen funktion definieren und initialisiern. Dann faellt das setq weg.

partsOnly sollte dann die Liste mit allen Teilen, genau!

wie sieht partsOnly denn am Ende aus? (ich kann hier momentan nix laufen lassen),

Code:
(dolist (ap partsOnly) (pprint (sd-inq-obj-pathname ap)))

mein groesster Verdacht: get_selection ist syntaktisch noch flasch. Ich hab's nur hin geschrieben, es war PSEUDO code.  Da fehlt auch noch ein sd-call-cmds.

In einem solchen Fall sollte man IMMER die Console an haben und erstmal viel tracen, damit man SIEHT wer denn "Sie haben einen unerwarteten Wert eingegeben" ausloest und wie ggf der Aufruf der Fehler ausloesenden Routine aussieht.

Baugruppe in Bauruppe loest ja (get_selection ... :RECURSIVE) auf. Andernfalls muessten wir (wie von Claus geschrieben) die recursion selber durchfuehren. Aber das ueberlassen wir (faul wie wir sind) dem get_selection.

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1548
Registriert: 27.03.2003

● PEnix@home
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 14. Nov. 2017 13: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 Nur für Seele 10 Unities + Antwort hilfreich

Habe mir den angehaengten code noch mal angesehen.

du hast doch in SW_Dichte_Suchen schon eine recursion geschrieben. Wann immmer die SW_Dichte_Suchen eine Baugruppe als ersten parameter erhaelft ruft sich die funktion fuer alle Kinder der Baugruppe erneut auf.

Wenn der erste parameter aber ein (passendes) Teil ist wird es in die Drawlist geschubst.

statt
>>> (defun SW_Dichte_Suchen (Baugruppe ...
lieber
<<< (defun SW_Dichte_Suchen (sel-item ...
weil der erste parameter mal Teil/mal Baugruppe sein kann. Das vermeidet so komischen code wie:
    (sd-inq-part-density Baugruppe))

Statt die TEILE in die Drawlist zu schubsen, kannst du die TEILE an genau der code stelle in eine LISTE schubsen (push...), die du dann von der defun als return zurueckgeben laesst.

Dann hast du direkt die Liste aller Teile und musst nicht erneut die aktuelle Drawlist durchnudeln. Und wir braechten keine X fachen fit_vp (siehe posting oben).

Wenn ich den vorhandenen Code richtig lese, benutzt du nemmlich die Drawlist des VP nur als "zwischen puffer"  zwischen Aufsammlen und Abarbeiten.

Vielleicht uebersehe ich aber auch was. 

Vielleicht habe ich aber auch schon zu viel geschrieben.  die armen CAD'ler. 

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 14. Nov. 2017 15: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

Hallo Wolfgang, ...

ich werde das bei Gelegenheit testen, ...

einfacher wäre es, wenn man nebenbei nicht ständig etwas zu Konstruieren hätte. 

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 14. Nov. 2017 21: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

Hallo Wolfgang, ...

ich habe jetzt deine Angaben getestet und im iKit nachgesehen, wo der Fehler sein könnte.
Theoretisch sollte die Zeile so ausehen :

(nconc partsOnly (sd-call-cmds(get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :in-assembly a-item :RECURSIVE)))

Schicke ich die Auswahl so vorraus, das nur Teile, keine Baugruppe in der Auswahl sind, dann läuft dein Code einwandfrei durch, d.h,
(when (SD-INQ-PART-P a-item)
  (push a-item partsOnly))
funktioniert korrekt, ...aber wenn ich eine Baugruppe wähle dann nicht, ....

(when (SD-INQ-ASSEMBLY-P a-item)
(nconc partsOnly (sd-call-cmds(get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :in-assembly a-item :RECURSIVE)))

Hier habe ich einzeln geprüft:

(when (SD-INQ-ASSEMBLY-P a-item) => funktioniert gibt t zurück
(DISPLAY (sd-call-cmds(get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :in-assembly a-item :RECURSIVE)))) => funktioniert nicht, Fehlermeldung unverändert.

Irgendwie muss ich irgendwas im I-Kit übersehen haben.

Nehme ich :allow_face_part :allow_wire_part => keine Veränderung
:focus_type habe ich ergänzt, weil es so im I-Kit steht  => keine Veränderung

Ich glaube ich bin zu blöd für den get-selection Befehl.

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

clausb
Ehrenmitglied V.I.P. h.c.



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

Beiträge: 2870
Registriert: 20.12.2000

Ich schreibe das hier in meiner Freizeit und spreche weder für meinen Arbeitgeber noch für andere Firmen. Mehr Unsinn von mir unter clausbrod.de.

erstellt am: 14. Nov. 2017 21:51    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 Seele 10 Unities + Antwort hilfreich

Und hier gibt es jetzt gleich zwei sehr simple Lösungen. Beide verzichten auf get_selection, und die zweite kommt sogar ohne temporäre Listen aus:

http://www.clausbrod.de/Blog/DefinePrivatePublic20171114ExpandingDrawlists

Wohl bekomm's .-)

Claus

------------------
CoCreate Modeling FAQ: http://www.clausbrod.de/CoCreateModeling/ - Blog: http://www.clausbrod.de/Blog

[Diese Nachricht wurde von clausb am 15. Nov. 2017 editiert.]

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1548
Registriert: 27.03.2003

● PEnix@home
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 15. Nov. 2017 16:17    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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Seele:

(when (SD-INQ-ASSEMBLY-P a-item)
(nconc partsOnly (sd-call-cmds(get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :in-assembly a-item :RECURSIVE)))

Hier habe ich einzeln geprüft:

(when (SD-INQ-ASSEMBLY-P a-item) => funktioniert gibt t zurück
(DISPLAY (sd-call-cmds(get_selection :focus_type *sd-part-seltype* :allow_face_part :allow_wire_part :select :in-assembly a-item :RECURSIVE)))) => funktioniert nicht, Fehlermeldung unverändert.

Irgendwie muss ich irgendwas im I-Kit übersehen haben.


- ist nicht _

.
.
.
.
.
.
Okay, ich schreib's ausfuehrlicher:

Beispiele in der cad.de-osd Fundgrube

Code:
part_res.lsp:3: (let ((Teile  (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :select :recursive :in_assembly Importdaten)))
Zaehlen.lsp:55:      (setf ubgr (length (sd-call-cmds (get_selection :focus_type *sd-assembly-seltype* :select :recursive :in_assembly bgr))))
Zaehlen.lsp:56:      (setf total (length (sd-call-cmds (get_selection :focus_type *sd-part-seltype* :allow_wire_part :allow_face_part :select :recursive :in_assembly bgr))))
Zaehlen.lsp:101:      (setf lay (length (sd-call-cmds (get_selection :focus_type *sd-layout-seltype* :select :recursive :in_assembly bgr))))

es heisst
:select
:recursive
:in______________________assembly
a-item

Das ist halt Programieren und kein Deutschaufsatz :D


im Ikit gibt es sogar ein passendes Beispiel

Code:
Select all parts in a specific assembly:

  (sd-call-cmds (get_selection :focus_type *sd-part-seltype*
:select :in_assembly assembly-sel-item))



jaja.  Wald und Baeume.  Ist ja bald Weihnachten, dann gibts erstmal wieder paar weniger Baeume im Wald. 

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 20. Nov. 2017 08:43    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, Problem gelöst, ... es funktioniert, ...

Hallo Wolfgang, also der Fehler in der Schreibweise mit dem Minus ist bei mir angekommen, ich hatte es mit Sicherheit auch zwischendurch schon mal richtig geschrieben, aufgrund des Baugruppen-Problems (unten beschrieben) dachte ich jedoch es läuft immer noch nicht und deswegen kommt man ins zweifeln, ob es so überhaupt gehen könnte, ... und man kopiert es wieder aus der Vorlage raus, die Du mir geschickt hattest, ...

Mit diesem Code läuft es durch ...

(dolist (a-item Darstellungsliste)
(when (SD-INQ-ASSEMBLY-P a-item)
(nconc partsOnly (sd-call-cmds (get_selection :focus_type *sd-part-seltype*  :allow_face_part :allow_wire_part : select :recursive :in_assembly a-item )))
);when
(when (SD-INQ-PART-P a-item)
(push a-item partsOnly)
);when
); dolist


Jedoch kommen folgende neue Probleme:

sind zufällig alle Teile am Bildschirm in kompletten Baugruppen bleibt die Liste partsOnly leer, blende ich ein einzelnes Teil vorher aus oder ein, funktioniert es.
Wieso keine Ahnung, ... (deswegen dachte ich es funktioniert überhaupt nicht)

zweites Problem dieser Lösung, es werden auch alle Teile im Behälter der Teile mit angezeigt, welche ich nicht ausgewählt hatte, und auch nicht gebrauchen kann.

Die Lösung von Claus funktionierte bei mir auf anhieb, mit genau dem Ergebnis, was ich wollte.
Es werden alle Teile der Darstellungsliste aufgezählt ohne die Teile in den Behältern die hinten dran hängen. 

Vielen Dank an euch beiden für Eure Mühe mit einem LISP-Anfänger wie mir, ...

Gruß Wolfgang


------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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

der_Wolfgang
Ehrenmitglied
Tastenhauer


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

Beiträge: 1548
Registriert: 27.03.2003

● PEnix@home
● OutOfCadSince2009
● JobLess2017v02

erstellt am: 20. Nov. 2017 12: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 Seele 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Seele:
Jedoch kommen folgende neue Probleme:

sind zufällig alle Teile am Bildschirm in kompletten Baugruppen bleibt die Liste partsOnly leer, blende ich ein einzelnes Teil vorher aus oder ein, funktioniert es.



arg.. :(  der nconc ist manchmal etwas haarig - sorry - Wenn ich mich recht entsinne, verhaelt er sich etwas anders wenn die Liste noch LEER ist (was im Fall von NUR Baugruppen der Fall ist). Auf der anderen Seite ist nconc aber destructive (erzeug weniger LISP Garbage). Listen kann man auch mit append verknubblen...
Zitat:
zweites Problem dieser Lösung, es werden auch alle Teile im Behälter der Teile mit angezeigt, welche ich nicht ausgewählt hatte
Da koennte man vielleicht aus der SELECT subaction noch was rauskitzeln (:without-container oder sowas)

Bleibt fuer mich eigentlich die Frage offen, warum du die draw list vom VP misbrauchst (sieht posting vom 14. Nov. 2017 13:49).

Aber ich denke der Thread hier ist lang genug und Du hast nun ne funktionierende Loesung  war nett! 

------------------
Firefox ESRJava Forum Stuttgart JUGS ● OSD Hilfeseite (de) / help page (en)NotePad++BuFDi

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

Seele
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 11.06.2003

Intel Xeon CPU E5-1650 v3@3,50 GHz, 32GB RAM
NVidia Quadro K4200
Win7-64Bit
Elements/Direct v19.0 M050 + v20.0 M010
PartLibrary, Surfacing, 3D-PDF,
3D-Access, Unigraphics-Schnittstelle

erstellt am: 20. Nov. 2017 16:32    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 Wolfgang, ...

--- Bleibt fuer mich eigentlich die Frage offen, warum du die draw list vom VP misbrauchst (sieht posting vom 14. Nov. 2017 13:49). ---

Die Drawlist Missbrauche ich dafür, damit ich nach der ersten automatischen Auswahl über irgendwelche Faktoren wie Dichte, Farbe u.s.w. trotzdem noch am Bildschirm bzw. Baum einfach ein paar Teile aus bzw. einblenden kann, bevor ich die Auswahl auf die restlichen angezeigten Teile auf dem Bildschirm anwende. Sprich einfach nur aus späterer Bequemlichkeit heraus, bzw. dass ich mehr Freiheiten bei der Selektion  habe.

Würde ich das nicht zulassen wollen, könnte ich das Ganze einfach gleich auf die Auswahl anwenden, und somit würde ich diese Fensterauswahl auch nicht brauchen.

Ich denke so ist es für den Benutzer schöner, mach einfach an den Teilen die du siehst, und bei Bedarf noch zusätzlich ein bzw. ausblenden.

Gruß Wolfgang

------------------
alles ist möglich, nichts funktioniert und trotzdem muß es bis morgen geschafft sein. 

Werden wir es schaffen? Ja wir schaffen das !!! :-)

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)2017 CAD.de