Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  SW: Blockdefinition und -instanz

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
  
SOLIDWORKS im Browser: Freiformflächen (Sub-D-Modeling) mit 3D Sculptor
Autor Thema:  SW: Blockdefinition und -instanz (3320 mal gelesen)
SWTaurus
Mitglied



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

Beiträge: 12
Registriert: 27.03.2011

erstellt am: 27. Mrz. 2011 13:45    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,

eigentlich wollte ich mein Verständnisproblem an dieses Thema anhängen, was aber leider aus irgendwelchen Gründen nicht funktioniert - nun also als neues Thema:
Für die Arbeit mit Blöcken in SolidWorks ist ja eine Definition und, wenn man später noch damit weiterarbeiten will, auch eine Blockinstanz erforderlich, soweit ich das verstanden habe.
Wenn man aber erst eine Definition und dann eine Instanz davon erzeugt...

Code:
Dim definition As SldWorks.SketchBlockDefinition
Dim instance As SldWorks.SketchBlockInstance
Set definition = part.SketchManager.MakeSketchBlockFromFile(point, path, True, 1, 0)
Set instance = part.SketchManager.InsertSketchBlockInstance(definition, point, 1, 0)

...ist der Block danach zwei Mal in der Zeichnung. Kann man das umgehen, oder sehe ich gerade den Wald vor lauter Bäumen nicht?

Vielen Dank schon im Voraus! :)

Grüße,
SWTaurus

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

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



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

Beiträge: 3682
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 27. Mrz. 2011 18: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 SWTaurus 10 Unities + Antwort hilfreich

Hallo SWTaurus.

Hier ein Auszug aus der Hilfe zur Methode MakeSketchBlockFromFile:

Remarks
If the entities of a block are associated with one or more layers and those layers do not already exist in the drawing, then the layers are inserted in the drawing and the associations between the entities of the block and the layers are maintained.

The block instance is inserted on the current drawing layer.

See Block Definitions and Block Instances for details.

Die Methode erzeugt also schon eine Block-Instanz. Wozu sollte sonst auch der Punkt mit übergeben werden?

Gruß, Torsten 

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

SWTaurus
Mitglied



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

Beiträge: 12
Registriert: 27.03.2011

erstellt am: 04. Apr. 2011 19:59    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 Thorsten,

vielen lieben Dank für Deine Hilfe und Entschuldigung für die späte Rückantwort. Den Hinweis in der API-Hilfe muss ich schlicht übersehen haben.
Momentan habe ich nun das Problem, dass der Variable definition kein Wert zugewiesen wird, nach der Zeile

Code:
definition = part.SketchManager.MakeSketchBlockFromFile(point, path, True, 1, 0)

ist definition noch immer 'Nothing', sodass ich bspw. den Befehl
Code:
definition.GetInstances(1)

nicht ausführen kann.
Hat da jemand eventuell eine Idee, was ich falsch mache? Das Set-Schlüsselwort am Beginn der Zeile entfernt mir MS Visual Basic Express 2010 sofort nach dem Eintippen, könnte dies der Grund dafür sein? Google wusste leider keine Antwort auf diese Frage und auf die Frage, wie ich das Entfernen von "Set" der IDE abgewöhnen kann.

Grüße,
SWTaurus

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: 05. Apr. 2011 08:14    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 SWTaurus 10 Unities + Antwort hilfreich

Hallo SWTaurus

vielleicht solltest Du mal den ganzen Code posten, weil
haben "sketchmanager" "point" und "path" einen Wert?

Ist im Pfad der auch die Dateierweiterung angegeben?

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

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

SWTaurus
Mitglied



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

Beiträge: 12
Registriert: 27.03.2011

erstellt am: 06. Jun. 2011 22:01    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,

zunächst bitte ich erneut vielmals um Entschuldigung für die späte Antwort und Danke für die Hilfe!

Das Problem hat sich inzwischen wohl erledigt, ich musste SolidWorks ohnehin neu unter Windows 7 32 Bit installieren und dort funktioniert die API wie gewünscht und der Befehle MakeSketchBlockFromFile liefert die Blockdefinition zurück. Eventuell ist dies also ein Fehler in der 64 Bit-Version.

Eine (hoffentlich) letzte Frage: Weiß zufällig jemand, wie ich die Vektordaten (x- und y-Position) zweier "SldWorks.MathPoint"-Objekte vergleichen kann? Ich möchte abfragen, ob die beiden den exakt selben Punkt beschreiben.

Grüße,
SWTaurus

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: 07. Jun. 2011 10:14    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 SWTaurus 10 Unities + Antwort hilfreich

Hallo SWTaurus,

Zitat:
Original erstellt von SWTaurus:
Weiß zufällig jemand, wie ich die Vektordaten (x- und y-Position) zweier "SldWorks.MathPoint"-Objekte vergleichen kann? Ich möchte abfragen, ob die beiden den exakt selben Punkt beschreiben.

Ich würde mir mir MathPoint::ArrayData die Koordinaten der beiden Mathpoints holen, jeweils die X,Y und Z-Werte voneinander abziehen und schauen, ob überall 0 rauskommt. Wenn ja, beschreiben die beiden Mathpoints denselben Punkt.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

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

SWTaurus
Mitglied



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

Beiträge: 12
Registriert: 27.03.2011

erstellt am: 09. Jun. 2011 17:52    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,

Danke für den Tipp! Hatte nicht vermutet, dass die als Object deklarierte "ArrayData" aus so leicht zu vergleichenden FKZ-Werten besteht. Sieht dann ganz simpel aus (wenn der z-Wert ohnehin 0 ist):

Code:
pointOne.ArrayData(0) = pointTwo.ArrayData(0) And pointOne.ArrayData(1) = pointTwo.ArrayData(1)

Grüße,
SWTaurus

[Diese Nachricht wurde von SWTaurus am 09. Jun. 2011 editiert.]

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

SWTaurus
Mitglied



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

Beiträge: 12
Registriert: 27.03.2011

erstellt am: 20. Jul. 2011 21: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

Hallo,

was noch Probleme verursacht, ist das Einfügen von Blöcken, die nur Text enthalten. Unter 32-Bit-Systemen werden hier noch immer keine Blockdefinitionen von der MakeSketchBlockFromFile-Methode zurückgegeben, das größere Problem ist aber, dass die Blöcke auf 64-Bit-Systemen (SolidWorks Office Professional 2008 x64 Edition) überhaupt nicht eingefügt werden.
Ein Beispielblock dazu ist hier zu finden: http://kinzigtalbahn.bplaced.net/temp/datetime.SLDBLK

Liegt da ein Fehler in der Blockdatei vor, oder ist dies ein Fehler der SolidWorks-API?

Grüße,
SWTaurus

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 20. Mrz. 2013 17: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 SWTaurus 10 Unities + Antwort hilfreich

Hallo,

beschäftige mich gerade auch mal mit unserem Block-Makro und ich find das hier noch etwas offen ist.

wenn ich einen Block erstmalig einfüge, bekomme ich mit MakeSketchBlockFromFile wie beschrieben eine Blockdefinition zurück (und die erste Instanz gleich eingefügt)

wenn der Blockdefinition aber schon mal drauf ist auf der Zeichnung,
dann liefert MakeSketchBlockFromFile zwar eine neue Instanz des Blocks auf die Zeichnung, (Makro funktioniert also offensichtlich)
aber die eigentlich erwartete Blockdefinition ist leer - es hat ja auch nichts gemaked, sondern nur benutzt.

Vermutlich ist das die Antwort auf die Fragen hier, warum es mal geht, und mal nicht.

Hat sich daran irgendwas geändert, oder hat jemand einen 3-Zeiler, der dann das richtige Blockdefinition-objekt zurückliefert?

Gruß, Christian

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: 21. Mrz. 2013 08:11    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 SWTaurus 10 Unities + Antwort hilfreich

Hallo Christian,

in der API Hilfe gibt es eine Zusammenfassung zu Blöcken und Blockinstanzen unter dem Stichwort "Block Definitions and Block Instances". Darin ist unten der Abschnitt über Blockinstanzen, darin wird im Punkt "insert block instances" auf den CAll SketchManager::InsertSketchBlockInstance verwiesen.

Da gibt es auch ein Beispiel namens "Create Block Definition and Insert Block Instance Example (VBA)", das hat zwar ein paar mehr als 3 Zeilen, aber sollte trotzdem helfen.

Ciao,
Stefan


------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 21. Mrz. 2013 09: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 SWTaurus 10 Unities + Antwort hilfreich

Hallo Stefan,

wäre ja auch zu schön gewesen ...

ich fand es aber schon überraschend, dass der zurückgelieferte Zeiger leer war, obwohl anstandslos ein Block eingefügt wurde ... denn das hab ich aus Hilfe und Beispielen so nicht herausgelesen.

ich hatte auch in Erinnerung, dass er dann auch mal eine neue Blockdefinition (Block-1, ...) eingefügt hat. womöglich spielt da noch eine Optionseinstellung eine Rolle?
naja, werd ich mal weiterbasteln.

sicherer ist vermutlich vorher auf vorhandensein der Blockdefinition zu prüfen,
wenn ja - aktualisieren (?) und neue Instanz von bestehender Blockdefinition einfügen
wenn nein - neue Definition + Instanz mit MakeSketchBlockFromFile

Gruß, Christian

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