| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Engineering in the Cloud: PLM in the Cloud for effective Processes |
Autor
|
Thema: API: Block an Maß Anhängen / ausrichten (2902 mal gelesen)
|
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 14. Dez. 2012 08:56 <-- editieren / zitieren --> Unities abgeben:
API: Zeichnungsblock an Maß Anhängen / ausrichten Hallo zusammen, bin gerade dabei ein Makro zu erstellen das mir an alle Maße (bzw. Annotation) einen Block einfügt. Obwohl ich die Koordinaten mit „CurAnnotation.GetPosition“ auslese und an den Einfügepunkt des Blocks „swMathUtil.CreatePoint((pt))“ weitergebe, stimmt die einfüge Position des Blocks nicht. Anbei der relevante Code: Code: '------------------------------------------------------------------------------------------------------------------- 'Position der Bemaßung finden: AnnotationPosition(0) , AnnotationPosition(1), AnnotationPosition(2) '------------------------------------------------------------------------------------------------------------------- Set CurAnnotation = DisplayDimension.GetAnnotation AnnotationPosition = CurAnnotation.GetPosition If Not IsNull(AnnotationPosition) Then XCord = AnnotationPosition(0) YCord = AnnotationPosition(1) ZCord = AnnotationPosition(2) End If '------------------------------------------------------------------------------------------------------------------- 'Block einfügen '------------------------------------------------------------------------------------------------------------------- Set Part = swApp.ActiveDoc Set SelMgr = Part.SelectionManager Set swMathUtil = swApp.GetMathUtility pt(0) = XCord pt(1) = YCord pt(2) = ZCord Set swMathPoint = swMathUtil.CreatePoint((pt)) Set newBlockDefinition = Part.SketchManager.MakeSketchBlockFromFile(swMathPoint, "\rot.SLDBLK", False, 0.5, 0) '------------------------------------------------------------------------------------------------------------------- '-------------------------------------------------------------------------------------------------------------------
Meine Frage wäre, wie kann ich die Position der Bemaßung auslesen? Außerdem benötige ich noch den Winkel der Bemaßungsausrichtung (also in welchem Winkel die Bemaßung zum Blatt steht um den Block auszurichten)
Vielen Dank für eure Hilfe.
[Diese Nachricht wurde von coolio1975 am 14. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Dez. 2012 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo Coolio Zitat: Original erstellt von coolio1975: Obwohl ich die Koordinaten mit „CurAnnotation.GetPosition“ auslese und an den Einfügepunkt des Blocks „swMathUtil.CreatePoint((pt))“ weitergebe, stimmt die einfüge Position des Blocks nicht.
Bist du im Modell oder in der Zeichnung? Kann es sein, dass deine Blöcke immer so links/unten/hinter der Beschriftung sind? Ist mir nur aufgefallen, du schreibst in deinem Code: pt(0) = XCord - 0.1 SolidWorks rechnet in Meter, also verschiebst du den Einfügepunkt um jeweils 100 mm nach links, unten und hinten. Auf der Zeichnung bräuchtest du eigentlich die Z Koordinate nicht und könntest die auf Null lassen. Ich bin mir nicht sicher, aber es ist meine ich auch so, dass du dei Koordinaten in der Zeichnung ggf. in Bezug auf den Drawingview bekommst, wenn du dann den Block in Bezug auf Blattkoordinaten einfügst kommt der nächste Zeischenraum zu stande. Und schau mal in den Thread API Blöcke in Zeichnungsansichten einfügen rein, vielleicht kommen dir da noch ein paar Ideen, woran es liegen könnte. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 14. Dez. 2012 10:44 <-- editieren / zitieren --> Unities abgeben:
Ja, bin in einer Zeichnung. Das: Code: pt(0) = XCord - 0.1
sollte natürlich ohne das "-1" sein. Da hab ich nur rumgespielt um rauszufinden ob die Blöcke in einem Offset verschoben werden (hab es oben auch editiert). Das SWX in Metern rechnet ist mir bekannt. Ich lese sie ja auch in Metern aus und geben Sie so weiter... Zitat: aber es ist meine ich auch so, dass du die Koordinaten in der Zeichnung ggf. in Bezug auf den Drawingview bekommst
Ja richtig, ich aktiviere immer vorher die Drawingview so erhalte ich die Koordinaten abhängig zur Ansicht. Und gebe Sie dann durch die DOPPELTE Klammer in "swMathUtil.CreatePoint((pt))" auch zu der Ansicht wieder aus :-(( Der empfohlen Thread hab ich mir schon ganz genau angesehen, danke für die Hilfe, irgendwo da liegt der Hund begraben...! ich stückle mal den kompletten Code zusammen, dann kann man es evtl. besser erkennen und mal testen.
[Diese Nachricht wurde von coolio1975 am 14. Dez. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 16. Dez. 2012 21:06 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo colio Ich kann Dir zwar im Moment nicht weiter helfen, weil ich zu Haus bin. Werd Dir aber am Mo. Nachmittag was Posten. Nur so als Hinweis: Du solltest auch den Maßstab des Views berücksichtigen und eine eventuelle Drehung des Views. Ich weiß nicht ob das für Dich wichtig ist, aber von einer Detailansicht einer Schnittansicht, wird es schwierig das Displaydimension Objekt zu bekommen. Das ist zur Zeit ein Bug in SWX und ist vonnSolidWorks auch schon aufgenommen.
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 17. Dez. 2012 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo also ich bestimme den Einfügepunkt mit vAnnPos(0) = ((vAnnPos(0) + (2 / 1000)) / mm) - (vPt(0) / mm) vAnnPos(1) = ((vAnnPos(1) + (2 / 1000)) / mm) - (vPt(1) / mm) wobei "mm" der Maßstab des Views "vAnnPos" dis Position des Annotation Objekts "(2 / 1000)" ein Offset zur Bemaßungsposition "vpt(0)" die Position des Views das passt aber nur, wenn die Ansicht nicht mit "Ansicht drehen" gedreht ist Wenn die Ansicht gedreht ist, musst Du as auch noch in der Berechnung berücksichtigen. ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 20. Dez. 2012 10:25 <-- editieren / zitieren --> Unities abgeben:
|
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 20. Dez. 2012 13:58 <-- editieren / zitieren --> Unities abgeben:
Okay super, funktioniert. Vielen Dank!! Bekomme die Blöcke schön an das Maß geheftet (mit Berücksichtigung des Maßstabes). Das mit dem Winkel ist mir auch klar. Auslesen des Ansichtswinkels funktioniert auch. Wie kann ich nun die Einfüge Position bei einer gedrehten Ansicht berechnen? @nahe Kannst Du mir bitte deinen Code mal Posten? Außerdem stellt sich mir noch die Frage, wie ich die Ausrichtung (Winkel) der Bemaßung übermittelt bekomme?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 20. Dez. 2012 20:03 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
|
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 09. Jan. 2013 11:42 <-- editieren / zitieren --> Unities abgeben:
Noch ne Frage an die Profis, der folgende Code ist in einer Schleife die nacheinander einen Block an die Masspfeile heftet. Code:
'--------------------------------------------------------------------------------------- 'Block einfügen '---------------------------------------------------------------------------------------Dim newBlockDefinition As SldWorks.SketchBlockDefinition Set swMathUtil = swapp.GetMathUtility Set SwSketchMgr = DrawingDoc.SketchManager
pt(0) = XCord pt(1) = YCord Set swMathPoint = swMathUtil.CreatePoint((pt)) Set newBlockDefinition = DrawingDoc.SketchManager.MakeSketchBlockFromFile(swMathPoint, "Pfeil_rot.SLDBLK", False, 0.5, -1)
Der Block besteht aus mehreren Linien und einem Textfeld. Ausserdem hat er ein Attribut. Wie kann ich nun den Text oder das Attribute des Blocks ändern? Das ganze soll in der Schleife passieren und nicht in einer separaten Prozedur. Vielen Dank schon mal für eure Hilfe! [Diese Nachricht wurde von coolio1975 am 09. Jan. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 09. Jan. 2013 17:25 <-- editieren / zitieren --> Unities abgeben:
|
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 10. Jan. 2013 13:46 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo 1.) zum Thema Blockattribute vBlockInst.SetAttributeValue "Attributname als String", "Attributwert" wobei vBlockInst die Blockinstanz ist die Du eingefügt hast 2.) Position bei gedrehter Ansicht berechnen (Achtung: ich weiß nicht ob das die optimale Lösung ist) wobei "rp" die Position der Ansicht ist "p2" der Einfügepunkt der Blockinstanz ist "wi" der Drehwinkel der Ansicht ist Function rotate_point(rp As Variant, p2 As Variant, wi As Double) As Variant Dim temp(2) As Double Dim r As Double Dim w As Double Dim ww As Double x = p2(0) y = p2(1) r = Sqr(x * x + y * y) w = Atn(y / x) If x < 0 And y > 0 Then w = pi - w * -1 ElseIf x > 0 And y < 0 Then w = w ElseIf x > 0 And y > 0 Then w = w ElseIf y < 0 And x < 0 Then w = w + pi End If ww = w + wi * -1 x = Cos(ww) * r y = Sin(ww) * r temp(0) = x temp(1) = y temp(2) = 0 rotate_point = temp End Function ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 10. Jan. 2013 14:56 <-- editieren / zitieren --> Unities abgeben:
Erstmal wünsch ich Dir ein Gutes neues Jahr! Danke für die Antwort! Das mit dem vBlockInst.SetAttributeValue hab ich bereits versucht. Funktioniert leider immer nur einmal. Innerhalb der Schleife nicht! Anbei der Bereich der Probleme macht. Code: Option ExplicitDim swApp As Object Sub SetBloecke() Dim swBlockDef As SldWorks.SketchBlockDefinition Dim swBlockInst As SldWorks.SketchBlockInstance Dim swSketchMgr As SldWorks.SketchManager Dim swMathUtil As SldWorks.MathUtility Dim swMathPoint As SldWorks.MathPoint Dim swNote As SldWorks.Note Dim pt(2) As Double Dim DrawingDoc As SldWorks.ModelDoc2 Dim XCord As Long Dim YCord As Long Dim i As Byte Dim vNote As Variant
Set swApp = CreateObject("SldWorks.Application") Set DrawingDoc = swApp.ActiveDoc Set swSketchMgr = DrawingDoc.SketchManager Set swMathUtil = swApp.GetMathUtility XCord = 0.001 YCord = 0.001 For i = 0 To 10 '-------------------------------------------------------------------- 'Block Einfügepunkt setzen '-------------------------------------------------------------------- XCord = XCord + 0.005 YCord = YCord + 0.005 pt(0) = XCord pt(1) = YCord Set swMathPoint = swMathUtil.CreatePoint((pt)) '-------------------------------------------------------------------- 'Block einfügen '-------------------------------------------------------------------- Set swBlockDef = swSketchMgr.MakeSketchBlockFromFile(swMathPoint, "Pfeil_rot.SLDBLK", False, 0.5, -1) Set swBlockInst = swSketchMgr.InsertSketchBlockInstance(swBlockDef, swMathPoint, 0.5, -1) '-------------------------------------------------------------------- 'Nummer in Block schreiben (Variante 1) '-------------------------------------------------------------------- ' vNote = swBlockInst.GetAttributes ' Set swNote = vNote(0) ' swNote.SetText (1) '-------------------------------------------------------------------- 'Nummer in Block schreiben (Variante 2) '-------------------------------------------------------------------- swBlockInst.SetAttributeValue "count", 1 '-------------------------------------------------------------------- i = i + 1 Next i DrawingDoc.GraphicsRedraw End Sub
Beide Varianten funktionieren NUR beim ersten durchlaufen der Schleife.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 10. Jan. 2013 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
hab leider nicht mehr viel Zeit heute aber "Set swBlockDef = swSketchMgr.MakeSketchBlockFromFile(swMathPoint, "Pfeil_rot.SLDBLK", False, 0.5, -1)" solltest Du nur 1x vor der Schleife aufrufen und nicht jedesmal (wenn ich mich richtig erinnere steht das in der API-Online-Hilfe) ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 10. Jan. 2013 16:51 <-- editieren / zitieren --> Unities abgeben:
SUPER! Vielen Dank... Allerdings wird der Block schon bei der Definition gesetzt (kann man ja nachträglich per suche löschen). Und bei einem 2. Start der Prozedur kommt der selbe Fehler wieder! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 11. Jan. 2013 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
naja Du musst halt vorher prüfen ob die Blockdefinition bereits vorhanden ist. Wenn nicht, dann muss der Block aus der Datei eingefügt werden. Wenn er aus der Datei eingefügt wird muss das halt in der Schleife erkannt werden, damit das nur 1x geschieht.
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 11. Jan. 2013 11:18 <-- editieren / zitieren --> Unities abgeben:
Soweit hab ich alles hin bekommen. Super wie du hier deine Hilfe leistest Das mit dem Drehen der Ansicht funktioniert leider nicht wie gewünscht. Wärst Du mal bitte so nett und könntest deinen Code mal etwas erläutern. Des Weiteren würde ich noch gerne wissen ob es möglich ist, die Ausrichtung eines einzelnen Maßes auszulesen (Links oder Rechts vom Bauteil, Horizontale oder Vertikale Bemaßung etc.) Benützt Du eigentlich ein Makro um Prüfzeichnungen zu erstellen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 14. Jan. 2013 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo also recht viel gibt es bei dem Code nicht zu erklären. Ich hab nur festgestellt, dass es scheinbar entscheidened ist in welchem Quadrant am Einheitskreis der Punkt zu liegen kommt, bevor ich die Verdrehung der Ansicht subdrahiere od. addiere. für die Erkennung ob horizontal/vertikal würd ich mal versuchen das mit "DimensionLineDirection" vom Dimension Objekt zu erkennen. Zur Zeit verwenden wir Inreto um Prüfmarken zu setzen und Erstmusterprüfberichte zu erstellen. http://mbm-solution.de/12.html Funktioniert recht gut, mit ein paar Einschränkungen. Ich wollte ein Makro zur Erstellung von Prüfmarken machen, bin dann aber auf einen Bug in SWX gestossen, der mein Projekt verhindert hat. (wenn man ein Maß von einer Detailansicht aus einer Schnittansicht hat und davon mit "GetNameForSelection" den Wert auslesen will. bekommt man einen falschen Wert zurück)
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 16. Jan. 2013 15:26 <-- editieren / zitieren --> Unities abgeben:
Noch ne Frage, beim Auslesen der Maße Funktioniert soweit alles Prima. Nur leider weis ich nicht was ich mit dem Maß bzw. mit dem Rückgabe Wert einer Fase Code: wert = Dimension.SystemValue
anfangen kann. Z.B. bei einer Fase 1x45° bekomme ich den Wert 2,35619449019235...Ich Wähle zusätlich den Typ mit Code: Select Case (DisplayDimension.Type2)
und Case 10 "ChamferDimension". Soweit so gut, aber wie bekomme ich die Bemaßung der Fase, also 1x45°??Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1747 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 16. Jan. 2013 16:42 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
|
coolio1975 Mitglied
Beiträge: 19 Registriert: 14.12.2012 ------------------------ SWX-2012 SP3.0 CATIA V5 ------------------------ Windows 7 64 bit DELL T3500 Workstation Xeon W3680 (6-Kern) 3.33 GHz 12GB RAM ------------------------ NVIDIA Quadro FX 3800
|
erstellt am: 21. Jan. 2013 16:17 <-- editieren / zitieren --> Unities abgeben:
Ja habe ich bereits, selbes Ergebnis. Ich benötige den Text wie die Bemaßung der Fase dargestellt wird. Also zum Beispiel „ 1 x 30°“. Ich habe diverse Möglichkeiten versucht, wie: Code: Debug.Print "value: " & swDim.value Debug.Print "GetUserValueIn: " & swDim.GetUserValueIn(DrawingDoc) Debug.Print "SystemValue: " & swDim.SystemValue Debug.Print "Length = " & length Debug.Print "Angle = " & Round(angle, 3)
Liefert das Ergebnis (egal ob die fase mit „6 x 60°“ oder mit „10,39 x 30°“ bemaßt ist): Code: value: 60 GetUserValueIn: 60 SystemValue: 1,0471975511966 Length = 12 Angle = 60
Wie kann ich den dargestellten text auf der Zeichnung auslesen? Zur Info „.GetText(swDimensionTextAll)“ funktioniert nicht! Bitte um eure Hilfe!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 22. Jan. 2013 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo coolio, ich hab leider im Moment kein Codebeispiel, um das Phänomen nachzuvollziehen, dass scheint ja etwas kniffliger zu sein. Zitat: Original erstellt von coolio1975: Wie kann ich den dargestellten text auf der Zeichnung auslesen? Zur Info „.GetText(swDimensionTextAll)“ funktioniert nicht! Bitte um eure Hilfe!!
Hast du mal bei API Support nachgefragt? Die sind normalerweise sehr schnell und hilfreich, wenn auch etwas kurz angebunden. Im Moment würde ich empfehlen denen das Problem mit ein paar Screenshots und ggf. Beispielmakros zu schildern. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 22. Jan. 2013 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für coolio1975
Hallo nochmal, ich hab mal ein wenig in der API Hilfe gestöbert zu den Fasenbemaßungen (chamfer dimension). Da sticht mir dann eine Bemerkung ins Auge: Zitat: aus der API Hilfe zu Dimension::GetSystemChamferValues [...] Remarks Unlike most other types of dimensions, the values returned for a chamfer dimension are not necessarily the values seen by the user in the displayed dimension text. The display dimension interprets these values and considers the type of chamfer display requested by the user and then creates an appropriate output string.
Hört sich für mich fast so an, als ist die Form der Darstellung des Bemaßungstextes der Ein-Klick-Fasenbemaßung hart kodiert in den Display Dimensions. Ich hab auch nirgendwo was bei Display Dimension gefunden, dass man den evaluierten Text selbst auslesen könnte. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |