Hallo iedereen,
Zou er mij iemand kunnen uitleggen of de code geven hoe ik een block of wblock kan invoegen in mijn modelspace vanuit het programmeren in VBA.
Ik werk met een userform die een paar berekeningen maakt (dit werkt al) ik moet een message box krijgen met de uitkomsten (doet ie ook al) en nu moet ik (als je op de "OK" knop klikt) een block of wblock automatich kunnen laten invoegen...
Help mij aub!
Mvg, Stijn
In de help file van vlisp en daarvan de ActiveX and VBA Reference onder methods vind je de gegevens.
Onder andere moet je ongeveer 6 variabelen meegeven als je InsertBlock gebruikt.
Citaat van: Stijn123 op do 02 04 2009, 09:30:32
Hallo iedereen,
Zou er mij iemand kunnen uitleggen of de code geven hoe ik een block of wblock kan invoegen in mijn modelspace vanuit het programmeren in VBA.
Ik werk met een userform die een paar berekeningen maakt (dit werkt al) ik moet een message box krijgen met de uitkomsten (doet ie ook al) en nu moet ik (als je op de "OK" knop klikt) een block of wblock automatich kunnen laten invoegen...
Help mij aub!
Mvg, Stijn
Beste Stijn,
Vanuit de AutoCAD Help:
Sub Ch10_InsertingABlock()
' Define the block
Dim blockObj As AcadBlock
Dim insertionPnt(0 To 2) As Double
insertionPnt(0) = 0
insertionPnt(1) = 0
insertionPnt(2) = 0
Set blockObj = ThisDrawing.Blocks.Add _
(insertionPnt, "CircleBlock")
' Add a circle to the block
Dim circleObj As AcadCircle
Dim center(0 To 2) As Double
Dim radius As Double
center(0) = 0
center(1) = 0
center(2) = 0
radius = 1
Set circleObj = blockObj.AddCircle(center, radius)
' Insert the block
Dim blockRefObj As AcadBlockReference
insertionPnt(0) = 2
insertionPnt(1) = 2
insertionPnt(2) = 0
Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock _
(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
ZoomAll
MsgBox "The circle belongs to " & blockRefObj.ObjectName
End Sub
Als je een block "MIJNBLOCK" en een coördinatensysteem met de naam "MIJNUCS"
hebt, dan heb je misschien hier iets aan:
Sub Insert1()
Dim XYZ(0 To 2) As Double
Dim TestBlock As AcadBlockReference
Dim ucsObj As AcadUCS
Dim TransMatrix As Variant
Set ucsObj = ThisDrawing.UserCoordinateSystems.Item("MIJNUCS")
XYZ(0) = 0
XYZ(1) = 0
XYZ(2) = 0
Set TestBlock = ThisDrawing.ModelSpace.InsertBlock(XYZ, "MIJNBLOCK", 1, 1, 1, 0)
TransMatrix = ucsObj.GetUCSMatrix()
TestBlock.TransformBy (TransMatrix)
TestBlock.Update
End Sub
Met vriendelijke groet, HofCAD CSI.
Stijn,
ipv ThisDrawing.ModelSpace.InsertBlock kun je ook de volgende constructie toepassen
Dim space As AcadBlock
Dim newSymb As AcadBlockReference
'bepalen welke space actief is
If ThisDrawing.ActiveSpace = acModelSpace Then
Set space = ThisDrawing.ModelSpace
Else
If ThisDrawing.MSpace Then
Set space = ThisDrawing.ModelSpace
Else
Set space = ThisDrawing.PaperSpace
End If
End If
Set newSymb = space.InsertBlock
Dan wordt je block in de active space geplaatst.
groeten
stephan