| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Creo | | | | Clevere Software unterstützt die Konstruktion komplexer Systeme, ein Anwenderbericht
|
Autor
|
Thema: 3D-Anno-Bemaßung (2090 mal gelesen)
|
uli1601 Mitglied Konstrukteur
Beiträge: 16 Registriert: 19.07.2007
|
erstellt am: 27. Mai. 2008 22:41 <-- editieren / zitieren --> Unities abgeben:
Ich habe ein Problem: Einfache Teile werden bei uns im 3D bemaßt und dann über einen nachgeschalteten Prozess weiterverarbeitet. Dazu werden Dokuebenen mit den Hauptmaßen erstellt. Dies möchte ich nach Möglichkeit per LISP erledigen. Dazu habe ich im angehaengten Code zwei Dokuebenen an einem Teil erzeugt und würde nun gerne die Dicke eines Blechs als Bemaßung per LISP erzeugen. Allerdings ist mir die Syntax und die erwarteten Eingabewerte des Befehls "doc3d_create_distance" nicht ganz klar. Als Aufhängepunkte für die Bemaßung würde ich gerne die Vorder- und Rückseite des Teils übergeben (die ich ja auch schon im Code erfolgreich bestimmt habe) Jedoch erhalte ich eine Fehlermeldung, wenn ich die beiden Flächen an den Befehl "doc3d_create_distance" übergebe. Ich vermute mal, dass bei diesen beiden Flächen der übergebene Datentyp nicht stimmt.
Code: (sd-call-cmds (DOC3D_CREATE_DISTANCE :A3D_DIM :ref1 Front_face :ref2 Back_face :DOCUPLANE (SD-INQ-CURR-DOCUPLANE) 0,0,0 ))
Front_face und Back_face sind dabei Flächen (value-type :FACE), die ich im angehängten Code bestimmt hatte. Allerdings ist mir auch mit der Online-Referenz nicht klar geworden, wie die Syntax richtig heißen müsste...Kennt sich jemand mit 3D-Annos und LISP aus, und kann mir da weiterhelfen? Vielen Dank schon mal Uli Edit: Habe die Datei mal nocheinmal angehängt, nachdem es wohl Probleme mit dem "ß" im Dateinamen gegeben hat. Edit2: doc3d_create_docuplane in doc3d_crate_distance geändert [Diese Nachricht wurde von uli1601 am 28. Mai. 2008 editiert.] [Diese Nachricht wurde von uli1601 am 28. Mai. 2008 editiert.] [Diese Nachricht wurde von uli1601 am 28. Mai. 2008 editiert.] 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: 28. Mai. 2008 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
|
uli1601 Mitglied Konstrukteur
Beiträge: 16 Registriert: 19.07.2007
|
erstellt am: 28. Mai. 2008 09:37 <-- editieren / zitieren --> Unities abgeben:
|
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 28. Mai. 2008 20:09 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
Zitat: Original erstellt von uli1601: Anhang funktioniert jetzt
vielleicht hattest Du auch noch nen Blank drin. Blanks sind auch oft 'phööööse' ;) ===================================================================== Im text schreibst Du "..doc3d_create_docuplane nicht ganz klar". Das code Beispiel ist aber DOC3D_CREATE_DISTANCE. Du machst Deine Frage undurchsichtiter als sie vermtulich ist. Hilfe zu Problembehebung: --------------------------------- Zitat: erhalte ich eine Fehlermeldung
1) gsss.. WELCHE!!!!?? Bitte den genauen text per copy and paste (kannst den text in der OSD error box mit der Maus markieren!) 2) was liefert (SD-INQ-CURR-DOCUPLANE) ???? -> tracen 3) Du erzeugst jedes mal einen neuen Docuplane set. Mit identischen Namen. Das kann ja nicht sein, oder? 4) hinter jedes (verdaechtige) sd-call-cmds schreibst Du mal bitte ein (pprint (oli:sd-inq-error-obj :all)) siehe IKIT docu, was diese function macht.
5) wenn ich deinen code richtig lese ist (SD-INQ-CURR-DOCUPLANE) die :left DP. Entspricht das deinen Erwartungen? streue bitte ein/zwei (pprint (oli:sd-inq-obj-pathname (oli:SD-INQ-CURR-DOCUPLANE))) ein liefern die das was Du meinst was richtig waere?
6)
Code: (equal (sd-plane-normal (sd-inq-geo-props facevalue :Dest-space :global)) (first Dir_Front))
uhhh.... sehr heikel. Vergleiche Zahlen, Koordinaten, Richtungen, NIE mit equal. Da hustet ein bit, die 17. Stelle hinterm komma kippt und das equal liefert ein NIL! -->>>> integration kit -> sd-vec-equal-p 7) wird Die Bemassung richtig erzeugt wenn du den "create DP + active DP"-Teil mal vorher von hand erledigst?
-------------------------------------- so, genug gefragt. ------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 28. Mai. 2008 20:18 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
|
uli1601 Mitglied Konstrukteur
Beiträge: 16 Registriert: 19.07.2007
|
erstellt am: 28. Mai. 2008 21:59 <-- editieren / zitieren --> Unities abgeben:
Oh, Schande über mich, hab das "doc3d_create_docuplane" richtiggestellt in "Doc3d_create_distance". zu deinen Fragen: Zitat: 1)gsss.. WELCHE!!!!??
Anfängerfehler, die Fehlermeldung werde ich morgen früh gleich nachliefern. Kann ich mit der PE leider jetzt nicht (kein 3D-Documentation) Zitat: 2) was liefert (SD-INQ-CURR-DOCUPLANE) ???? -> tracen
SD-INQ-CURR-DOCUPLANE liefert, wie in 5) vermutet die Docuplane SA_links, was auch beabsichtigt ist. (Hintergrund: einfaches Blechteil ohne Biegung soll auf der Seitenansicht von Links eine Dickenbemaßung bekommen) Zitat: 3) Du erzeugst jedes mal einen neuen Docuplane set. Mit identischen Namen. Das kann ja nicht sein, oder?
Das ist schon so gedacht, ich will das LISP ja auf ein neu erstelltes Teil anwenden, das noch keine Dokuebenensätze besitzt. Zitat: 4) ...
Ergebnis dazu werde ich morgen posten Zitat: 5) wenn ich deinen code richtig lese ist (SD-INQ-CURR-DOCUPLANE) die :left DP. Entspricht das deinen Erwartungen?
Dieser Code liefert die letzterzeugte Dokuebene (also SA_Links), das hatte ich mit dem von dir vorgeschlagenen pprint schon nachgeprüft Zitat: 6)...
Man lernt nie aus, vielen Dank, werde ich gleich ändern. In diesem Fall allerdings (Blech ohne Biegung) hat das "equal" die richtige Fläche erzeugt (die Variable "Back_face" habe ich mit pprint ausgegeben, diese stimmt) Zitat: 7) wird Die Bemassung richtig erzeugt wenn du den "create DP + active DP"-Teil mal vorher von hand erledigst?
Muss ich morgen nochmal überprüfen, aber ich meine, das hatte ich am Anfang probiert, und dabei trat der gleiche Fehler auf. Zitat: 8) faerb die gefundenen faces mal ein:
Werd ich morgen auch ausprobieren, ob diese richtig erkannt werden Vielleicht nocheinmal etwas zur Erklärung: Der Code funktioniert bei einem Blechteil ohne Biegung (also im einfachsten Fall ein Quader) soweit bis ich die 3d-Anno erzeugen möchte (Die Dokuebenen werden also richtig erzeugt, und die rückseitige Fläche der Variablen "Back_face" zugewiesen. Die Variablen "Front_face" und "Back_face" passen allerdings irgendwie nicht so recht zu den Keywörtern ":ref1" und ":ref2". Aber ich denke, die Fehlermeldung wird morgen dazu mehr Aufschluss geben. Vielen Dank, Wolfgang, aber schon mal für die Hinweise, diese werde ich gleich berücksichtigen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 28. Mai. 2008 22:13 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
Also das Erzeugen der Bemassung geht schief. DOC3D_CREATE_DISTANCE :A3D_DIM :ref1 :face_3d (gpntwc 83.062074 86.904881 2.926188 "vport1") ;; Front_face :ref2 :face_3d (gpntwc 82.513414 57.460126 2.926188 "vport1") ;; Back_face (gpntwc 74.283514 31.855991 2.926188 "vport1") eigentlich hast Du ja schon faces.. aber probier mal den :face_3d noch einzuststreuen (wird aufgezeichnet wenn man den selector zwischen drin noch bemueht). Bei meinem Quader sind die gefundenen flächen übrigens ortogonal zueinander, was nicht deinem Ansinnen entspricht, deswegen das einfaerben. Jetzt reichts fuer heut'!
------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uli1601 Mitglied Konstrukteur
Beiträge: 16 Registriert: 19.07.2007
|
erstellt am: 29. Mai. 2008 11:01 <-- editieren / zitieren --> Unities abgeben:
So, anbei mal die Fehlermeldung, die ich erhalte: Ich habe mal das sd-call-cmds für die Bemaßungserzeugung mit (sd-inq-error-obj :all) abgeprüft: Dabei erhalte ich die angehängte Meldung Zitat: <"LICENSING" "NO_ERROR" "Keine Fehler aufgetreten. <Meldung 3>." NIL> :REF1
Also stimmt wohl was bei dem Keywort :ref1 nicht. zu den eingefärbten Flächen: Die beiden Flächen, Vorder- und Rückseite eines Quaders werden richtig eingefärbt, so wie ich es mir vorstelle. Das funktioniert also alles. Warum allerdings Wolfgangs Flächen orthogonal aufeinander sind, ist mir nicht klar, außer... Wolfgang, hast du den Vektor "Dir_Front" von Hand zugewiesen, dieser wird nämlich für die Bestimmung der Rücksseite verwendet, wenn dieser nicht in Gegenrichtung der Vorderfläche zeigt, ist das Ergebnis natürlich auch nicht richtig. Ich hab mir jetzt noch einmal die Befehlsreferenz zu dem Befehl "doc3d_create_distance" angeschaut. Da wird bei dem Keywort :ref1 etwas von "calls subaction: SELECT with focus: SEL_MODE with :incl-position :3D" geschrieben. Heist das, ich kann gar nicht einfach eine normale Fläche übergeben? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 29. Mai. 2008 22:36 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
Zitat: Original erstellt von uli1601: So, anbei mal die Fehlermeldung, die ich erhalte:
hmm das bringt mich auf anhieb auch nicht weiter. Zitat: zu den eingefärbten Flächen:.... "Dir_Front" von Hand zugewiesen
hmmm weiss nimmer.. hab's nen paar mal hin und her probiert und als ich die flächen eingefärbt hatte, habe ich dann erstmal aufgehört. Zitat: I Befehlsreferenz ... "doc3d_create_distance" ... :ref1 etwas von "calls subaction: SELECT with focus: SEL_MODE with :incl-position :3D"
Das passt schon, je nach dem was der dialog so macht ist sel_mode mal dies und mal jenes. Im konkreten fall ist es die Kombination aus dem Selektiontyp fuer Flaechen und dem fuer Kanten (mit 'sel-types' im einzelnen will ich dich jetzt nicht belustigen, ähmm belästigen). Und zurück erhält man (also der dialog) nicht nur die fläche als sel-item, sondern zusätlich die geklickte position. Also das passt schon. hmmmmm.. <nachdenk> <kleine-glühbirne-leucht>. ein Fläche alleine macht noch keinen Sommerregen..
genau!!! die Fläche alleine genügt ja gar nicht. Recorder das mal!!!! mit punkten geht es so: Code: (DOC3D_CREATE_DISTANCE :a3d_dim 0,20,10 0,20,10 80,20,10 80,20,10 :free_dim 40,100,0 )
das erste 0,20,10 selektiert die Fläche, das zweite gibt den punkt )aug der Fläche) an. Wenn man das interaktive mit der Maus macht, passiert beides gleichzeitig. Beim programmtischen aufruf muss man aber eben auch beides angeben. Weil die Fläche alleine ja nicht genügt, sondern man will ja auch wissen WELCHEN punkt auf der fläche.Als kleinen test schreibst du nun erstmal eine hardcodiert position auf der jeweiligen Fläche dahinter und guckst ob der dialog dann durchläuft. -- Dann kannst die überlegen woher man die position holen kann.
Code: :ref1 Front_face 10,10,0 :ref2 Back_face 10,20,0
Gut das du noch mal nachgesehen hast!------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
uli1601 Mitglied Konstrukteur
Beiträge: 16 Registriert: 19.07.2007
|
erstellt am: 03. Jun. 2008 20:33 <-- editieren / zitieren --> Unities abgeben:
Mann, bin ich ein Esel... Anbei der jetzt funktionierende Code für eine Bemaßung: Code: (sd-call-cmds (DOC3D_CREATE_DISTANCE :A3D_DIM :ref1 :face_3d Front_face (sd-get-pnt-on-face Front_Face :Dest-space :global) :ref2 :face_3d Back_face (sd-get-pnt-on-face Back_Face :Dest-space :global) :DOcuplane (SD-INQ-CURR-DOCUPLANE) (sd-inq-wp-origin (SD-INQ-CURR-DOCUPLANE)) ))
Dabei sind "Front_face" und "Back_face" normale Flächenobjekte. Vielen Dank, Wolfgang, ohne deine Hilfe wäre ich da nie drauf gekommen, dass die Punkte und Flächen einfach nacheinander übergeben werden müssen. Ich hatte an so etwas ähnliches mit einem Punkt auf der Fläche schon gedacht, allerdings dann die Fläche und den Punkt als Liste dem Keywort ":ref1" übergeben. Dass diese einfach nacheinander "aufgezählt" werden müssen wär mir im Traum nicht eingefallen. Allerdings weiß ich jetzt nur noch nicht, wie ich am elegantesten den Stützpunkt der Bemaßung, den ich bisher mit Code: (sd-inq-wp-origin (SD-INQ-CURR-DOCUPLANE))
erzeuge und der im Moment praktisch irgendwo sitzt, so bekomme, dass er immer mittig unter dem Teil sitzt (so halt wie eine normale Bemaßung). Da hat nicht zufällig jemand eine Idee...?Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
der_Wolfgang Moderator Tastenhauer
Beiträge: 2219 Registriert: 3.20. ● PE60+80@home ● W10 Pro Build10.0.19045.4780 ● Drafting V17~V20.7 ● Modeling V17~V20.7 ● Windchill 12.1.2.6 ● UWGM Client 13.0.0.1
|
erstellt am: 03. Jun. 2008 22:28 <-- editieren / zitieren --> Unities abgeben: Nur für uli1601
Zitat: Original erstellt von uli1601: Vielen Dank, Wolfgang, ohne deine Hilfe wäre ich da nie drauf gekommen, dass die Punkte und Flächen einfach nacheinander übergeben werden müssen.
Bitte bitte! passt schon. In einem recorderfile muesste man das übrigens sehen, das da 2 Dinge in :ref1 reingesteckt werden und das keine liste ist. Immer auch hilfreich: das Kommando stueck fuer stuck per command line zu bedienen (KEIN klick in den viewport, nicht ein einziger!!!) und den prompt beobachten
- DOC3D_CREATE_DISTANCE
- prompt = ??
- :ref1
- prompt = ??
- x,y,z ;; fuer die Face (oder ein Selitem)
- prompt = ??
- x,y,z ;; fuer den punkt auf der Face
- prompt = ??
- .....
------------------ ● Seamonkey Firefox Thunderbird Seamonkey auf deutsch ● OSD Hilfeseite (de) / help page (en) ● Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|