| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für PTC CREO |
Autor
|
Thema: Browsereinträge einfärben (1908 mal gelesen)
|
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 12. Jan. 2004 20:12 <-- editieren / zitieren --> Unities abgeben:
hallo zusammen, ziel meiner derzeitigen bemühungen ist es die teile und baugruppenbenennungen im browser farbig zu machen. z.b. alle teile die im workmanager gesperrt sind in einer bestimmten farbe darzustellen. das ganze funktioniert soweit, bis auf teile die ein maching feature dran hängen haben. fuer die auswertung der stati (sd-inq-item-attribute pa "DB-DREF" :STATE :attachment :contents) wird die variable pa als sel-item verlangt. dieses sel-item wird mit sd-pathname-to-obj aus dem objname erzeugt. die untenstehende funktion liefert die variable objname als (type-of) extended-string zurück. solange der objname der pathname des teils oder der baugruppe ist, kann (sd-pathname-to-obj) den sel-item erzeugen. wenn die funktion aber an das schon beschriebene machining-feature kommt, das ja auch ein browsereintrag ist, wird der inhalt der objname variablen zu z.b. "/Quader1" :FEATURE "Gewindebohrung" und hier stolpert der sd-pathname-to-obj befehl. habe dann versucht den extended-string zu zerlegen (mit z.b. (read-from-string objname....) und somit den extended-string inhalt zu prüfen und auszusortieren. das hat auch keine erfolg gebracht, da der extended-string eines features mit einem " anfängt. hat jemand eine idee wie man entweder die machining einträge von vorne herein ausfiltern kann, oder wie man einen solchen extended-string zerlegt. kann man die (BrowserNode-NodeID) evtl. heranziehen (ist diese id irgendwie sprechend ?)
....
(defun my-color-interrogator (node name) (declare (ignore name)) (let ((objname (BrowserNode-objPath node))) (setq pa (sd-pathname-to-obj objname)) (if (equal (sd-inq-item-attribute pa "DB-DREF" :state :attachment :contents) "Gesperrt") "#ff0000" ) ) ) .... danke & grüsse steffen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 13. Jan. 2004 08:00 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo Steffen, Ganz sicher bin ich mir nicht, was du nun mit dem Machining Feature Eintrag machen willst. Ich wuerde sagen, dass die Funktion (sd-pathname-to-obj) fuer alle Nicht-Objekt-Eintraege (alles was nicht Baugruppe, Arbeitsebene,... ist) NIL liefert. Also auch fuer Machining-Feature. Solche Eintraege koennen aber auch nicht im Workmanager abgespeichert werden, da sie ja mit dem Teil/der Baugruppe/... in dem sie erzeugt wurden, abgespeichert werden. Deswegen wuerde ich sagen, macht die Abfrage von Datenbankattributen fuer solche Eintraege auch gar keinen Sinn. Habe ich dich da richtig verstanden? Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Klaus Lörincz Mitglied Consultant
Beiträge: 533 Registriert: 06.08.2003 OSD M = aktuell OSD D = aktuell OS M = aktuell auf WIN und HP-UX
|
erstellt am: 13. Jan. 2004 08:10 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo stonly, Prüfe doch einfach ob Du ein "Sel_Item" = Obejekt (Teil/Baugruppe) für deine Abfrage zur Verfügung hast. Die Features willst Du doch nicht einfärben - oder ? (defun my-color-interrogator (node name) (declare (ignore name)) (let* ( (objname (BrowserNode-objPath node)) (sel-item (sd-pathname-to-obj objname)) pa ) (when sel-item (setf pa (sd-pathname-to-obj objname)) (if (sd-string= (sd-inq-item-attribute pa "DB-DREF" :state :attachment :contents) "Gesperrt") "#ff0000" "#ff0101" ) ) ) ) Grüßle
------------------ Klaus Lörincz 0174 3439 428 Sindelfingen Germany Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 13. Jan. 2004 11:14 <-- editieren / zitieren --> Unities abgeben:
hallo klaus, vielen dank, das baby lebt. @dorothea: danke auch dir für deine schnelle antwort. war denkfehler meinerseits, nicht die zuordnung des sel-items sondern die auswertung der attribute ist auf den fehler gelaufen. grüsse steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2364 ● Drafting V20.1+4 ● Modeling V20.1+4
|
erstellt am: 17. Jan. 2004 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Ich finde die Idee des Einfarbens nett. Aber ich wuerde die Abfrage via
Code:
(AND object (OR (sd-inq-part-p object) (sd-inq-assembly-p object)))
durchziehen, denn nur diese Dinge kannst Du in den MM/DDM abspeichern. (workplanes gehen AFAIK auch.. aber wer macht das?) Was machst Du denn mit Layouts, Views, Docuplanes, Containern... die sich auch alle im Browser als sel-item zeigen?? Das inq-part-p ist entschieden schneller als die zuvorgenannten Objecte nach einem evtl. vorhandenen item-attribute abzuklappern. Du schraubst hier an einer Stelle die recht heftig in die Performance der Browserdarstellung geht. Mach mal einen trace auf Deine Funktion... ;-) Ich wuerde sogar auf das (let .. ) verzichten (garbage?) und auf die ohnehin vorhandene variable name zurueckgreifen (die ja auch pa heissen koennte)
Code:
(setf name (sd-pathname-to-obj(BrowserNode-objPath node))) (when (and name ....
--> nur geschrieben, nicht getestest! Mir fielen da gerade noch workplanes, workplane sets ein.
[Diese Nachricht wurde von der_Wolfgang am 17. Jan. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 20. Jan. 2004 12:49 <-- editieren / zitieren --> Unities abgeben:
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 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: 20. Jan. 2004 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
|
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 20. Jan. 2004 16:53 <-- editieren / zitieren --> Unities abgeben:
hallo claus & co betr. trace .... bei funktionen die schon im system definiert sind klappt das prima mit dem trace. geht das auch mit funktionen die unter :local-functions definiert worden sind ? .... :after-initialization '(progn (trace sd-inq-item-attribute) ; das funktioniert (trace eigenefunktion) ; funktioniert nicht ) :local-functions '( (eigenefunktion () .... ) was mach ich hier noch falsch. gruss steffen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 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: 20. Jan. 2004 18:27 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Bei lokalen Funktionen in einem Dialog kann man trace meines Wissens nicht anwenden, weil das ganz spezielle Biester sind. Du koenntest aber - zum Debuggen - einen Teil dieser lokalen Funktion zu einer globalen Funktion umwandeln und die dann tracen lassen. Claus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorothea Mitglied
Beiträge: 242 Registriert: 22.11.2001
|
erstellt am: 21. Jan. 2004 07:29 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo Steffen, Bei lokalen Funktionen - zum debuggen - fuege ich immer ein 'print' ein. Das hilft am besten. Das ist dann so gut wie ein trace auf system-definierte Funktionen, manchmal sogar besser. Wenn du es komfortabel machen willst, dann schreib dir eine debug-Funktion, die du aufrufst um irgendwelche Sachen zu printen. (defvar *do-debug-prints*) (setf *do-debug-prints* t) (defun debug-print (text) (when *do-debug-prints* (print text) ) ) Wenn du mit debuggen fertig bist, dann setze die Variable wieder auf nil. Gruss Dorothea
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stonly Mitglied
Beiträge: 43 Registriert: 05.09.2003
|
erstellt am: 21. Jan. 2004 07:49 <-- editieren / zitieren --> Unities abgeben:
|
Martin.M Mitglied Maschinenbau-Ingenieur
Beiträge: 352 Registriert: 05.10.2002
|
erstellt am: 15. Mrz. 2004 16:14 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo zusammen, gibt es eigentlich die Möglichkeit die Ansichtensätze anders einzufärben, wenn seit der letzten Annotation-Aktualisierung das Modell geändert worden ist ? Ist der Zeitpunkt der letzten Aktualisierung im Ansichtensatz gespeichert ? Ist der Zeitpunkt der letzten Modelierung im Modell gespeichert ? Dadurch würde man wesentlich leichter erkennen welche Annotationzeichnung aktualisiert werden muss. Tschuess Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Ehrenmitglied V.I.P. h.c. Tastenhauer
Beiträge: 2017 Registriert: 3.20. ● PE6+8@home ● W10 Pro Build19044.2364 ● Drafting V20.1+4 ● Modeling V20.1+4
|
erstellt am: 17. Mrz. 2004 23:16 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Hallo Martin, > Ist der Zeitpunkt der letzten Aktualisierung im Ansichtensatz gespeichert ? in der Ansicht, ja, aber nur sehr indirekt > Ist der Zeitpunkt der letzten Modelierung im Modell gespeichert ? jeweils der Parts/Assemblies ja. Das ganz laueft aber ueber checksummen ab und ..... ich verstehe Deine Frage nicht so ganz. Der Drawingbrowser macht doch schon genau das was Du willst. Der Drawingbrowser (Zeichnungliste nennt sich das in deutsch, glaube ich) färbt die Ansichten, als auch die Blätter und dann eben auch die gesamte Zeichnung seit XX versionen bereits ein. Wenn die Zeichnung 'blau' ist, ist sie fertig.. ;-), wenn ich das mal so sagen darf, denn SO trifft das sicherlich auch auf andere zu. Was vermisst Du also?
Falls Du einen ähnlichen Ansatz wie Steffen verfolgen willst, beachte bitte das man diesen "Ansicht-ist-aktuell"-Status nicht gar so einfach (und vor allesm SCHNELL!) herausbekommt wie die o.g. Database-Attribute.
Darueberhinaus bietet DDM/Modelmanager bereits intern einen solchen Check. Beim Speichern wird hierbei eine Verbindung 2d/3d geprüft und das kann man sich dann später anzeigen lassen.
Habe ich Dir damit weitergeholfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin.M Mitglied Maschinenbau-Ingenieur
Beiträge: 352 Registriert: 05.10.2002
|
erstellt am: 18. Mrz. 2004 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Zitat: Original erstellt von der_Wolfgang: [B]Hallo Martin, ... Der Drawingbrowser macht doch schon genau das was Du willst. Der Drawingbrowser (Zeichnungliste nennt sich das in deutsch, glaube ich) färbt die Ansichten, als auch die Blätter und dann eben auch die gesamte Zeichnung seit XX versionen bereits ein. ...[B]
Hallo Wolfgang, es geht darum ohne die Zeichnung zuladen zu erkennen ob die Zeichnung aktuell ist. Wenn ich 20 Zeichnungen lade und muss nur 5 aktualisieren ist das Laden der 15 Zeichnungen die aktuell sind doch Zeitverschwendung. Selbst wenn die Konstrukteure aufschreiben welche Modelle sie ändern kann da auch mal ein Modell vergessen werden. Wenn man es über die Freigabe im Workmanager regelt muss dort auch jedes Dokument gesucht werden. Das einfachste wäre die Farbe des Ansichtensatzes oder ein Befehl der nicht aktuelle Ansichtensätze in einer Baugruppe sucht. Kann man so ein Macro schreiben ? Tschuess Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gesch Mitglied Konstrukteur
Beiträge: 18 Registriert: 24.04.2003
|
erstellt am: 20. Apr. 2004 17:12 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
Das Einfaerben gesperrter Teile funktioniert bei mir mit dieser Funktion wunderbar, allerdings wird das aktive Teil nicht mehr grün hervorgehoben. Wie kann man das wieder implementieren ? Gibt es eine Funktion um das aktive Teil zu ermitteln und gruen zu faerben ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Fachgebietsplaner (w/m/div) für Großbauprojekte | Möchten Sie Ihre Ideen in nutzbringende und sinnvolle Technologien verwandeln? Ob im Bereich Mobility Solutions, Consumer Goods, Industrial Technology oder Energy and Building Technology - mit uns verbessern Sie die Lebensqualität der Menschen auf der ganzen Welt. Willkommen bei Bosch. Die Bosch Sicherheitssysteme GmbH freut sich auf Ihre Bewerbung! Anstellungsart: Unbefristet
| Anzeige ansehen | Projektmanagement |
|
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 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: 20. Apr. 2004 20:42 <-- editieren / zitieren --> Unities abgeben: Nur für stonly
|