| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: -1, #IND - Abgewickelte Länge gesweepter Bauteile hakt (1716 mal gelesen)
|
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Mrz. 2009 01:17 <-- editieren / zitieren --> Unities abgeben:
Moin! Ich benutze mit recht gutem Erfolg Igors hier http://ww3.cad.de/foren/ubb/Forum50/HTML/022070.shtml#000014 geposteten Code mit ein paar eigenen Anpassungen:
Code: Sub Pfadlaenge_az() Dim oPart As PartDocument Set oPart = ThisApplication.ActiveDocument Dim oSk3D As Sketch3D Dim oSkL3D As SketchLine3D Dim oSkS3D As SketchSpline3D Dim oSkA3D As SketchArc3D Dim l As Double Dim sLength As String Dim sLength2 As String Dim oSweep As SweepFeature Dim oPathEnt As PathEntity On Error Resume Next Dim i As Integer For Each oSk3D In objPartDocument.ComponentDefinition.Sketches3D For Each oSkL3D In oSk3D.SketchLines3D l = Round(oInventorApp.MeasureTools.GetLoopLength(oSkL3D) * 10, 0) On Error Resume Next Next Next If l = 0 Then '~~~~~~~~~~~~Nur wenn das vorher nicht geklappt hat Set oSweep = oPart.ComponentDefinition.Features.SweepFeatures(1) ' ~~~~~~~~~~~~~~~~~~~~~~~~Länge über Sweeping ~~ For Each oPathEnt In oSweep.Path If oPathEnt.SketchEntity.Type = kSketchLine3DObject Then Set oSkL3D = oPathEnt.SketchEntity l = l + oSkL3D.Length ElseIf oPathEnt.SketchEntity.Type = kSketchSpline3DObject Then Set oSkS3D = oPathEnt.SketchEntity l = l + oSkS3D.Length ElseIf oPathEnt.SketchEntity.Type = kSketchArc3DObject Then Set oSkS3D = oPathEnt.SketchEntity l = l + oSkA3D.Length Else '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Falls etwas anderes als Line, Spline oder Bogen gefunden wird MsgBox ("Unbekannter Segment-Typ! Die Berechnung wird abgebrochen.") oPart.SelectSet.Select oPathEnt.SketchEntity Exit Sub End If Next End If If l = 0 Then '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Falls Länge = 0 Berechnung über die Skizze ~~~~~~~~~~~~~~~~~~~ For Each oSk3D In oPart.ComponentDefinition.Sketches3D For Each oSkL3D In oSk3D.SketchLines3D l = l + oSkL3D.Length Next For Each oSkS3D In oSk3D.SketchSplines3D l = l + oSkS3D.Length Next Next End If If l <> 0 Then ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Resultate eintragen und Meldung ausgeben ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sLength2 = Round(l * 10, 1) sLength = Round(l + 0.5, 0) * 10 Call SetPropertyValueaz(oPart.PropertySets(4), sLength, sLength2) Else MsgBox ("Die Länge konnte nicht berechnet werden!") End If End Sub
Jüngst musste ich nun feststellen, dass dann, wenn der Sweepingpfad projizierte Kanten enthält, dieser Code nicht mehr funktioniert (Beispieldatei -333.ipt und jpg "...-nicht-auswertbar-..."). Was will mir dieser Text "-1,#IND" sagen? Das iProp wird angelegt, aber es bleibt leer, da stimmt die Messagebox sogar. Extras\Kontur_Messen funktioniert jedoch korrekt.Erst wenn ich für die projizierten Stücke des Pfades die "Verknüpfung löse", geht auch das Makro wieder wie sonst (Beispieldatei -333-Test.ipt und jpg "...-OK-..."). Die Verknüpfung zu lösen ist natürlich keine Lösung. Gibt es einen besseren Ausweg? ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 22. Mrz. 2009 14:34 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hi Kann es sein das dein Codeausschnitt nicht zum Problem paßt? Ich krieg in 3D-Skizzen keine adaptiven Projektionen hin (Bildungslücke?). Nur in einer 2D-Skizze und dazu paßt dein Code nicht. Kann deine Parts leider nicht öffnen, ich werkel noch mit 2008. Ich habe es bei einem anderen Problem so gelöst, das ich eine eigene Transaktion gestartet und über BreakLinkToFile die Verknüpfung gelöst habe. Dann habe ich meine Berechnungen laufen lassen und die Transaction rückgängig gemacht. Der Inhalt der Variablen bleibt dabei erhalten. Nach dem Rückgängig habe ich dann meine iProps weggeschrieben. Nicht schön, aber selten. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Mrz. 2009 18:00 <-- editieren / zitieren --> Unities abgeben:
Moin! Doch doch, das ist der Code, mit dem ich die Kabellänge eintrage und mit dem ich die beschriebenen Probleme habe. Damit mehrere Kabel, die in einem flexiblen Schutzrohr verlegt werden, dessen Verlauf auch bei Änderungen immer genau folgen, muss ich hier in der 3D-Skizze mit "Geometrie einschließen" arbeiten (sorry, ich hatte das falsche Wort benutzt, Projektion gibt's in der 3D-Skizze gar nicht. Sowohl die Funktion als auch das zugehörige Icon sind zwar sehr ähnlich, aber nicht gleich!). So einfach das mit Kabeln in einem Rohr in echt ist, so schwierig ist es im Modell. Ich habe dafür zunächst in dem Rohr, da wo die Kabelmitten verlaufen sollen, unter Verwendung des zentralen Sweeping-Pfades versetzte Flächenkanten erzeugt (s. jpg). Soweit gut, nur wenn man diese Kanten in der iam adaptiv einschließen will (Kabel sind einer der wenigen Fälle, wo ich Adaptivität benutze), entsteht lediglich festgelegte Geometrie (und selbst dabei stimmt verwirrenderweise die Farbe anfangs nicht ). Bislang gelingt mir iam-Adaptivität in 3D-Skizzen nur mit Arbeitsebenen und Arbeitsachsen, und das reicht nun mal nicht, um einen kompletten Kabelverlauf gleichmäßig versetzt passend zu modellieren. Einschließen von Arbeitspunkten führt auch nur zu fixierten Kopien. Ich habe nur assoziatives Einschliessen hinbekommen, indem ich die jeweilige Fläche in die Kabel.ipt ableite und das Einschließen der benötigten Kante erst dort innerhalb des ipt vornehme. Nur dann haben diese Elemente der 3D-Skizze die korrekte Farbe und folgen Änderungen (s. jpg). Aber genau dann bockt das Makro. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 22. Mrz. 2009 21:29 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Ich bin zu doof für sowas. Das mit den versetzten Flächenkanten hab ich nicht verstanden. Ich hab mir ein Mantelrohr gesweept. Die 3D-Skizze dieses Mantelrohres (Sweepingpfad) habe ich als abgeleitete Komponente in die 2 innenliegenden "Kabel" geholt. Dann habe ich in jedem Kabel noch eine 2D-Skizze für das Profil erstellt. Diese Querschnitte liegen rechts und links neben dem Pfad. Entgegen meiner Erwartung meckert Inventor nicht, daß der Pfad das Profil nicht schneidet. Heraus kommt ein Mantelrohr mit 2 Kabeln drin, die der Änderung des Mantelrohres 1:1 folgen. Und dein Code produziert bei mir dann auch keinen Fehler. Meine Baugruppe liegt hier Ist zwar keine Lösung für den Code, aber vielleicht kannst du mit der Konstruktionsmethode was anfangen. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 22. Mrz. 2009 21:58 <-- editieren / zitieren --> Unities abgeben:
Ja, so geht es besser, leider hilft das aber nicht. Ich muss den Pfad von dem Schutzrohr noch weiter führen, denn die Kabel sind natürlich länger als das Rohr. Auch dann funktioniert es zwar, zumindest wenn ich Dein Beispiel nehme, aber mein Problem kann ich damit doch nicht lösen. Ich kann nur mit einem Pfad arbeiten, der zentrisch in der Einzelader verläuft, denn ich muss den adaptiv an den jeweiligen einzelnen Klemmstellen am Anschlussort abhängig machen, und das geht exzentrisch nur sehr schlecht oder sehr umständlich. ------------------ Roland www.Das-Entwicklungsbuero.de [Diese Nachricht wurde von Doc Snyder am 22. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Mrz. 2009 00:15 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
Hallo Was wäre, wenn du so wie in meinem Beispiel die Kabeltrasse führst. An der Stelle, an der die Mantelleitung endet, skizzierst du mit einer 3D-Skizze vom Mittelpunkt des Kabels (kann man in einer 3D-Skizze "fangen") weiter zum Auflegepunkt des Kabel am Kontakt. Mit einer 2D-Skizze auf die Querschnittsfläche am Kabelende und einer adaptiven Projektion der Querschnittsfläche erzeugst du ein neues Sweepingprofil. Damit kannst du das Kabel per Sweeping "verlängern". Dann hättest du am Ende der Trasse jeweils einen Pfad der mittig im jeweiligen Kabel verläuft. Ich hab das als Beispiel hier nochmal abgelegt. Du müßtest dann noch deinen Code an einer Stelle ändern Code: For Each oSk3D In oPart.ComponentDefinition.Sketches3D For Each oSkL3D In oSk3D.SketchLines3D l = l + Round(oInventorApp.MeasureTools.GetLoopLength(oSkL3D), 0) On Error Resume Next Next Next
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 23. Mrz. 2009 01:02 <-- editieren / zitieren --> Unities abgeben:
Danke erst mal für die Mühe! Von dem neuen Weg bin ich aber nicht so begesitert. Es wären dann ja zwei Pfade aneinandergehängt, und das mit dem Summieren ist mir nicht geheuer. Wer weiß wie das nachher reagiert, und welche Pfade da dann so zusammengezählt werden, wenn man grad mal nicht hinsieht. Das andere Ende des Kabels kommt ja auch noch dazu. Ich finde, das sollte schon in einem gesweept werden, daher habe ich anders weiter probiert. Erster Versuch war, die mit dem Mittelpfad und der Fläche gesweepte Kante schon im Master in eine gesonderte 3D-Skizze zu übernehmen, äh, einzuschließen und nur diese dann zu exportieren. Das tat's nicht. Dann habe ich nur den Pfad und die Querschnittskizze in den Slave exportiert und dort erst das Hilfssweeping der Fläche gemacht und die Kante dort in die gesonderte 3D-Skizze übernommen, also "eingeschlossen". Das scheint nun zu gehen. Ich war gerade dabei, das testhalber auch in der echten Baugruppe umzusetzen, um fundiert berichten zu können. Status also: ich kriegs hin, aber nur mit Klimmzügen. --- Da haben wir also nun zusammen rund ein halbes Dutzend verschiedene Methoden ausprobiert, nur um diese komische Meldung zu umgehen. Ich würde ja schon gerne wissen, was das für ein Effekt ist, der diese Fehlermeldung hervorruft und ob es nicht auch eine "richtige" Lösung gibt. So ein Eiertanz mit Geheimrezept für die Reihenfolge der Erstellung der 3D-Skizze, nur damit das Makro rechnen mag, ist ja schon fast peinlich. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 23. Mrz. 2009 01:10 <-- editieren / zitieren --> Unities abgeben:
Mist verdammter, alles falsch! Nun rechnet das doofe Makro immer nur das erste Sweeping in den Kabel-ipt, das Hilfs-Sweeping, das so lang ist wie das Schutzrohr, und das ist natürlich falsch. Also: immer noch keine Lösung. Ich sehe schon kommen, dass ich dann doch noch mit dem Schneiderbandmaß in der Maschine herumkrieche und die Kabellängen für die Serienbestellung aufnehme. Oder alle verlegten Kabel noch mal ausbaue und abmesse und wieder einbaue. Tolle Wurst! Hab ich dafür ein "modernes 3D-CAD"? ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Doc Snyder Ehrenmitglied V.I.P. h.c. Dr.-Ing. Maschinenbau, Entwicklung & Konstruktion von Spezialmaschinen
Beiträge: 13115 Registriert: 02.04.2004 AIP2013SP2.2 XPproSP2 MS-IntelliMouse-Optical SpacePilot DellM4600 2,13GHz 2GB FxGo1400 1920x1200 am Dock Dell2711
|
erstellt am: 23. Mrz. 2009 02:06 <-- editieren / zitieren --> Unities abgeben:
Ähm, tja wie soll ich sagen - ich habe mit dem falschen Code gearbeitet Das was ich da noch aktiv hatte und oben gepostet habe, macht den beschriebenen Fehler. Das aber, was Igor in dem genannten Thread nach ein paar Optimierungen gepostet hat, ist etwas Anderes. Ich hatte vor lauter verschiedenen Autoren und Versionen den Überblick verloren. Igors zuletzt gepostete Code macht den Fehler nicht und rechnet alle meine Kabel richtig, auch die mit abgeleiteten versetzten Pfaden. Ich muss bloß noch das Format des Parameters anpassen. D.h., alles war ein verfrühter Aprilscherz. Nu ja. Irren ist menschlich. ------------------ Roland www.Das-Entwicklungsbuero.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Mrz. 2009 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für Doc Snyder
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|