AutoCAD VBA-使用图案填充创建块
我试图在AutoCAD中创建具有圆形、数字和实体图案填充的块,但我似乎无法使图案填充正常工作?我不确定我做错了什么-任何帮助都会很好AutoCAD VBA-使用图案填充创建块,vba,excel,autocad,Vba,Excel,Autocad,我试图在AutoCAD中创建具有圆形、数字和实体图案填充的块,但我似乎无法使图案填充正常工作?我不确定我做错了什么-任何帮助都会很好 ' Create the block insertionPnt(0) = Sheet1.Cells(n, 3) insertionPnt(1) = Sheet1.Cells(n, 4) insertionPnt(2) = 0 Set blockObj = ACAD.ActiveDocument.Blocks.Add(inse
' Create the block
insertionPnt(0) = Sheet1.Cells(n, 3)
insertionPnt(1) = Sheet1.Cells(n, 4)
insertionPnt(2) = 0
Set blockObj = ACAD.ActiveDocument.Blocks.Add(insertionPnt, namestr)
'Add the circle to the block
center(0) = Sheet1.Cells(n, 3)
center(1) = Sheet1.Cells(n, 4)
center(2) = 0
Set circleObj = blockObj.AddCircle(center, Rad(0) / 2)
'Add hatch to the block
hatchObj = blockObj.AddHatch(0, "Solid", True)
hatchObj.AppendOuterLoop (circleObj)
hatchObj.Evaluate
'Add text to the block
Set blocktext = blockObj.AddText(Nums(0), Coords, 0.5)
blocktext.Alignment = acAlignmentMiddleCenter
blocktext.TextAlignmentPoint = Coords
'Insert the block
insertionPnt(0) = Sheet1.Cells(n, 3)
insertionPnt(1) = Sheet1.Cells(n, 4)
Set blockRefObj = ACAD.ActiveDocument.ModelSpace.InsertBlock(insertionPnt, namestr, 1#, 1#, 1#, 0)
有两个缺点
1) hatchObj=blockObj.AddHatch中缺少Set
关键字(0,“实心”,True)
2) AppendOuterLoop
方法需要循环
参数的对象和数组
因此,图案填充部分应类似于:
Dim outerLoop(0 To 0) As AcadEntity ' declare the array of objects
Set outerLoop(0) = blockObj.AddCircle(Center, 10#) ' fill it with a circle object
'Add hatch to the block
Set hatchObj = blockObj.AddHatch(0, "Solid", True) '
hatchObj.AppendOuterLoop (outerLoop) 'append the outerloop
hatchObj.Evaluate
有两个缺点
1) hatchObj=blockObj.AddHatch中缺少Set
关键字(0,“实心”,True)
2) AppendOuterLoop
方法需要循环
参数的对象和数组
因此,图案填充部分应类似于:
Dim outerLoop(0 To 0) As AcadEntity ' declare the array of objects
Set outerLoop(0) = blockObj.AddCircle(Center, 10#) ' fill it with a circle object
'Add hatch to the block
Set hatchObj = blockObj.AddHatch(0, "Solid", True) '
hatchObj.AppendOuterLoop (outerLoop) 'append the outerloop
hatchObj.Evaluate
Rad(0)/2
这真的是一个半径为0的圆吗?代码似乎没问题,那么你得到了什么结果?只有圆形而没有图案填充?有错误消息吗?我得到一个没有图案填充的圆,但没有错误消息。Rad(0)是一个数组,我实际上将所有直径都附加到该数组中,因此代码循环通过Rad数组中的每个值,并将其除以2以获得半径,而不是直径。因此,请尝试在模型空间而不是块上绘制相同的值。然后通过选择全部检查(在“属性”窗口中,如果选择了2个或3个图元),可能有图案填充,但不可见。我不确定,但我记得在一些shademode中,图案为“SOLID”的图案填充没有显示。Rad(0)/2
这真的是一个半径为0的圆吗?代码似乎还可以,那么您得到的结果是什么?只有圆形而没有图案填充?有错误消息吗?我得到一个没有图案填充的圆,但没有错误消息。Rad(0)是一个数组,我实际上将所有直径都附加到该数组中,因此代码循环通过Rad数组中的每个值,并将其除以2以获得半径,而不是直径。因此,请尝试在模型空间而不是块上绘制相同的值。然后通过选择全部检查(在“属性”窗口中,如果选择了2个或3个图元),可能有图案填充,但不可见。我不确定,但我记得在某些shademode中,图案为“SOLID”的图案填充未显示。