Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Blockhandhabung per API

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
  
E-Book: Simulation für Hightech Innovationen
Autor Thema:  Blockhandhabung per API (1461 mal gelesen)
Volkmar Grube
Mitglied
Konstrukteur


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

Beiträge: 120
Registriert: 31.01.2009

WIN11 64Bit, SWX 2022, Delphi 10

erstellt am: 30. Sep. 2011 08:53    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

Liebe Kollegen,
ich möchte ein Makro schreiben, welches bestimmte Blöcke temporär mit der zugehörigen Datei verbinden soll.
Ich habe den unten angehängten Code geschrieben.
Das Problem ist nun, dass die Verbindung sauber funktioniert, das Trennen aber nicht. iblock.LinkToFile bleibt Wahr, was immer ich da anstelle, obwohl der Weg mit iBlock=false ordentlich durchlaufen wird. Hat da irgendjemand eine Idee oder ist das ein Bug in meiner SWXSolidWorks-Version 2009.
(Anmerkung:Ich weiß, dass der Code nur für Testzwecke geeignet ist. Zur Identifizierung der zur ändernden Blöcke muss ich dann über die Instanzen gehen 

Code:
' Makro zur Verbindung/Trennung von Blöcken mit ihrer Datei
' Autor: Volkmar Grube
' 28.11.2011

Option Explicit

Dim swApp As SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

Dim skMgr As SldWorks.SketchManager

Dim pBlock As SldWorks.SketchBlockDefinition

Dim pInst As SldWorks.SketchBlockInstance

Dim leaderPt As SldWorks.MathPoint

Dim insPt As SldWorks.MathPoint

Dim vInstPt As Variant

Dim vInstances As Variant

Dim vBlocks As Variant

Dim nInstanceCount As Long

Dim itr As Long

Dim jtr As Long

Dim bLinkToFile As Boolean


Sub BlockStatusUmschalten(iblock As SldWorks.SketchBlockDefinition, Verbinden As Boolean)
  swModel.EditTemplate
  If Verbinden Then
    ' Block defintion linked to file?
    iblock.LinkToFile = True
    ' Block linked file name
    iblock.FileName = "s:\SWVorlagen\Sfeldsw.SLDBLK"
  Else
    ' Block defintion linked to file?
    iblock.LinkToFile = False
    ' Block linked file name
    iblock.FileName = " "
  End If
  swModel.GraphicsRedraw2
  swModel.EditSheet
  swModel.ForceRebuild3 (True)
End Sub

Sub Verbinden()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set skMgr = swModel.SketchManager

    vBlocks = skMgr.GetSketchBlockDefinitions
    ' Exit if no blocks
    If IsEmpty(vBlocks) Then
        Exit Sub
    End If
    ' Process block definitions
    For itr = 0 To UBound(vBlocks)
      Set pBlock = vBlocks(itr)
      BlockStatusUmschalten pBlock, True
    Next itr
End Sub

Sub Trennen()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set skMgr = swModel.SketchManager

    vBlocks = skMgr.GetSketchBlockDefinitions
    ' Exit if no blocks
    If IsEmpty(vBlocks) Then
        Exit Sub
    End If
    ' Process block definitions
    For itr = 0 To UBound(vBlocks)
      Set pBlock = vBlocks(itr)
      BlockStatusUmschalten pBlock, False
    Next itr
End Sub

------------------
Grüße aus Dresden
Volkmar Grube

Es gibt keine Probleme, es gibt nur Aufgaben.

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