Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro Block einfügen

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
Autor Thema:   Makro Block einfügen (502 mal gelesen)
remtc
Mitglied



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

Beiträge: 33
Registriert: 18.09.2017

Solidworks Prof. 2018SP5 x64 auf Win 10

erstellt am: 17. Jul. 2019 11:57    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

Hallo zusammen,

ich steh (mal wieder) vor einem Problem bei der Programmierung von einem Makro in Solid works.

mein Makro soll eine Kombination aus annotation (myNote) und einem Block aus dem Sketchmanager an einem von der Maus gesezten Punkt erzeugen...
dies funktioniert bei einem leeren Blatt mit Rahmen ohne Probleme. Wenn eine Zeichenansicht (View) bei dem makro durch die Maus aktiviert wird, wird die Annotation richtig gesetzt jedoch nicht der Block - dieser verschwindet in der Pampa. ich bin mit meinem latein am Ende.
gibt es die Möglichkeit die view-Aktivierung zu ignorieren oder das Koordinatensystem der View zu ignorieren und immer das Koordsystem des Blattformates zu benutzen? oder ein Setpositon des "MakeSketchBlockFromFile" ohne mathPoint (ich vermute da liegt die Krux)? oder irgendwas anderes?

Code:
    If UserForm1.OptionButton7.Value = True Then
        zaehler = 7
        X_ = X + 0.00525
        Y_ = Y + 0.0095
    End If

    'Debug.Print zaehler
    'Debug.Print nenner

    Angle_user = nenner * zaehler

    If Not myNote Is Nothing Then
   
      myNote.Angle = 0
      boolstatus = myNote.SetBalloon(0, 0)
      Set myAnnotation = myNote.GetAnnotation()
        pt(0) = X
        pt(1) = Y
        pt(2) = 0
        Set swMathUtil1 = swApp.GetMathUtility

        'Debug.Print "-------------------"
        'Debug.Print "ix: " & ix
        'Debug.Print "iy: " & iy
        'Debug.Print "X: " & X
        'Debug.Print "Y: " & Y
        'Debug.Print "Z: " & Z
        'Debug.Print "-------------------"

        If Not myAnnotation Is Nothing Then
            longstatus = myAnnotation.SetLeader2(False, 0, True, False, False, False)
            boolstatus = myAnnotation.SetPosition(X_, Y_, Z)
   
            Dim vAttachPos              As Variant
            Dim vAnnPos                As Variant
            vAttachPos = myNote.GetAttachPos
            vAnnPos = myAnnotation.GetPosition
            Debug.Print "      Layer        = " & myAnnotation.Layer
            Debug.Print "      AttachPos    = (" & vAttachPos(0) * 1000# & ", " & vAttachPos(1) * 1000# & ", " & vAttachPos(2) * 1000# & ") mm"
            Debug.Print "      AnnPos      = (" & vAnnPos(0) * 1000# & ", " & vAnnPos(1) * 1000# & ", " & vAnnPos(2) * 1000# & ") mm"

            Set swMathPoint = swMathUtil1.CreatePoint((pt))
            Set newBlockDefinition = swModel.SketchManager.MakeSketchBlockFromFile(swMathPoint, "F:\Solidworks\Vorlagen\Macros\Sicherheitskopie\stempel\stempel.SLDBLK", False, 1, Angle_user)
'http://help.solidworks.com/2014/English/api/sldworksapi/Get_Names_of_Sketch_Segments_Example_VB.htm
'der Sketchmanger skizziert nach falschen koordinaten?
            boolstatus = myAnnotation.SetTextFormat(0, True, myTextFormat)
      End If
    End If


ich wäre für jede Hilfe dankbar!

Grüße remtc

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

swx-cad-nutzer
Mitglied
Konstr


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

Beiträge: 224
Registriert: 15.06.2011

SWX 2018
SP 4.0
64 bit
16GB RAM
HP Z420 Workstation

erstellt am: 17. Jul. 2019 12: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 remtc 10 Unities + Antwort hilfreich

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2354
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 17. Jul. 2019 12:36    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 remtc 10 Unities + Antwort hilfreich

Hallo,

mit "Block aus dem Sketchmanager" meinst du doch eine Skizze als Block? Wieso trennst du eigentlich die Beschriftung und den Block oder hab ich das nur falsch verstanden?

Hast du dir schon mal überlegt das Symbol (falls es nicht zu komplex ist) in die gtol.sym mit aufzunehmen, für wirklich häufig verwendete Symbole hatte ich das in meiner alten Firma so gemacht? Vorteil das man diese auch einfach in Texten verwenden kann.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

remtc
Mitglied



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

Beiträge: 33
Registriert: 18.09.2017

Solidworks Prof. 2018SP5 x64 auf Win 10

erstellt am: 17. Jul. 2019 12:48    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

Hallo SWX-cad-nutzer,
bei dem verlinkten Problem geht es leider nicht um unabhängige Positionierung der Blöcke. Ich möchte sowohl auf dem Blattformat als auch in der Zeichnungsansicht den selben Block einfügen.

Hallo bernd,

ich betrachte text und Block voneinander getrennt, weil der Text im laufe der Programmierung hochgezählt wird.
Und der Block ist tatsächlich nicht besonders umfangreich ein paar Linien 2 kreise und ein gefüllter Bereich - dadurch lässt sich der Block auf verschieden Layer mit unterschiedlichen Farben legen.
Nein mit der gtol.sym hatte ich bisher noch nichts am Hut. Aber da wir mit 4 Rechnern im Netzwerk auf das Makro zugreifen werden dachte ich wäre sinnvoll es mit einem Block zu lösen.

grüße remtc

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2354
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 17. Jul. 2019 13:04    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 remtc 10 Unities + Antwort hilfreich

Hallo,

die gtol.sym (Symbolbibliotheksdatei) kann auch auf einem Netzlaufwerk liegen und gemeinsam verwendet werden aber da du einen gefüllten Bereich hast ist die Variante über die gtol.sym hierfür uninteressant.

Für das Hochzählen kannst du doch die Beschriftung auch in den Block packen diese Beschriftung dann als Block-Attribut definieren und entsprechend hochzählen. Mit SetAttributeValue Method (ISketchBlockInstance) kannst du den Wert des Attribut setzen.

Gruß
Bernd


------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 17. Jul. 2019 editiert.]

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

remtc
Mitglied



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

Beiträge: 33
Registriert: 18.09.2017

Solidworks Prof. 2018SP5 x64 auf Win 10

erstellt am: 17. Jul. 2019 13:16    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


block.JPG

 
Hallo Bernd,

Zitat:
Für das Hochzählen kannst du doch die Beschriftung auch in den Block packen diese Beschriftung dann als Block-Attribut definieren und entsprechend hochzählen. Mit SetAttributeValue Method (ISketchBlockInstance) kannst du den Wert des Attribut setzen.

dann wird aber der Text ebenfalls auf den farbigen Layer gelegt?
jedoch wird mein Hauptproblem (Blockeinfügepunkt im Viewkoordinatensystem zu Blockeinfügepunkt im Rahmenkoordinatensystem) nicht gelöst...

der Block in dem die "01" drin steht wurde als erstes neben der Ansicht eingefügt, der Block und die "02" wurden in der Zeichenansicht eingefügt.

grüße remtc

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 698
Registriert: 18.05.2005

SolidWorks 2018 x64 SP4.0
Dell T3600 Workstation
Intel XENON 6x3.2 GHz
NVIDIA Quadro 4000 2 GB
16GB RAM
2x Dell U2412M, 24" TFT
Windows 7 Professional x64 SP1
Microsoft Office Pro 2010 SP2
Kaspersky Anti-Virus 10.2.4.674
Microsoft VB 2010 Express
SpacePilot von 3Dconnexion

erstellt am: 17. Jul. 2019 15:23    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 remtc 10 Unities + Antwort hilfreich

Hallo

Ich glaube da müssen die Zeichnungskoordinaten zu Ansichtskoordinaten umgerechnet werden.
ModelToViewTransform Property (IView)
MultiplyTransform Method (IMathPoint)

Gruss Andreas

[edit]Link korrigiert[/edit]

[Diese Nachricht wurde von HenryV am 18. Jul. 2019 editiert.]

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2354
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 17. Jul. 2019 15:54    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 remtc 10 Unities + Antwort hilfreich

Hallo,

die Frage ist wo die Blöcke liegen sollen, auf der aktivierten Ansicht oder auf dem Blatt, weil wenn sie grundsätlich auf dem Blatt liegen sollen könntest du als ersten Schritt einfach das "Blatt" als aktive Ansicht setzen, wenn dass der Fall ist sollte eigentlich die Umrechnung der Globalen in die Ansichts-Koordinaten entfallen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

remtc
Mitglied



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

Beiträge: 33
Registriert: 18.09.2017

Solidworks Prof. 2018SP5 x64 auf Win 10

erstellt am: 18. Jul. 2019 07:54    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

Hallo zusammen,

tatsächlich wäre es mir am liebsten wenn die Kombination aus Block und Text sich in der Zeichnungsansicht befindet. so lässt sich das Gesamtpaket bei Bedarf verschieben. Wenn es jedoch nicht möglich wäre wäre ich auch mit dem Rahmen zufrieden.

Das gemeine ist aber das die Ansicht erst aktiviert wird wenn ich mit der Maus darüber fahre und klicke. Ebenso wäre es Möglich das sich 2 oder mehrere Ansichten der selben Baugruppe auf einem Blatt befinden und dadurch auch separiert werden müsste... :/

was ich benötigen würde wäre also ein Code der sagt

Code:
Wenn Ansicht durch Maus aktiviert wurde
Nullpunkt der aktivierten Ansicht befindet sich auf Koordinate XY des Rahmens
XY koordinate der Maus im Blattformat sind hier
XYkoordinate Blattformat zu XY Koordinate Zeichenansicht umrechnen
Block und Text setzen


Grüße remtc

Hallo Andreas beide deiner Links verweisen auf das gleiche Dokument und es steht direkt drüber

Zitat:
"This property is a get-only property. Set is not implemented. "

Grüße remtc

[Diese Nachricht wurde von remtc am 18. Jul. 2019 editiert.]

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2354
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 18. Jul. 2019 08: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 remtc 10 Unities + Antwort hilfreich

Hallo,

wie wäre es den wenn du dir als ersten Schritt alle Ansichtspositionen holst und dann deine aktuelle Mausposition mit den Ansichtspositionen vergleichst und die Ansicht die am nähesten an der Mausposition dran ist aktivierst und entsprechend die Umrechnung machst.

1. Ansichten Traversieren und Positionen holen
2. Prüfen welche Ansicht Type swDrawingSheet ist und welche Ansichten Position X=0 Y=0 haben.
3. Restlichen Ansichten mit Namen oder Count und Positionen in ein Arry schreiben (ohne die aus dem vorherigen Schritt)
4. Klickposition der Maus ermitteln
5. Klickposition über eine Schleife mit den Ansichtspositionen vergleichen
6. Nähste Ansicht aktivieren
7. Position entsprechend Umrechnen
8. Block und Beschreibungen einfügen

Punkt 1. - 3. beim Initialisieren
Punkt 4. - 8. im Maus Event

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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