Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Block an Maß Anhängen / ausrichten

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
  
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



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

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 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

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)



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

Vielen Dank,

werds versuchen und mich bei bedarf wieder melden!

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

coolio1975
Mitglied



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

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 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

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

Hallo coolio

die Antwort gibt erst nächstes Jahr, weil ich jetzt bis zum 10.1. nicht in der Fa. bin

Frohe Weihnachten

------------------
Grüße
Heinz

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

coolio1975
Mitglied



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

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 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

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



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

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 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

Hier hab ich noch ein Beitrag gefunden der sich genau um das Problem dreht...

Nur leider verstehe ich nicht was zu tun ist :-(

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

nahe
Ehrenmitglied



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

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 Explicit

Dim 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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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



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

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 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

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



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

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 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 coolio1975 10 Unities + Antwort hilfreich

hast Du es schon mal mit "Value" statt "Systemvalue" versucht?

------------------
Grüße
Heinz

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

coolio1975
Mitglied



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

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 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

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)



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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)



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

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 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 coolio1975 10 Unities + Antwort hilfreich

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

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)2024 CAD.de | Impressum | Datenschutz