Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AutoCAD VBA-使用图案填充创建块_Vba_Excel_Autocad - Fatal编程技术网

AutoCAD VBA-使用图案填充创建块

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

我试图在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(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”的图案填充未显示。