2017-11-29 11 views
1

AutoCAD에서 원, 숫자 및 솔리드 해치가있는 블록을 만들려고하지만 해치가 작동하지 않는 것처럼 보입니까? 내가 뭘 잘못하고 있는지 잘 모르겠다 - 도움이 될거야!AutoCAD VBA - 해치가있는 블록 생성

' 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) 
+0

'Rad (0)/2'는 실제로이 반지름이 0 인 원입니까? –

+0

코드가 정상인 것처럼 보이므로 결과가 어떻게됩니까? 해치가없는 서클 만? 오류 메시지가 있습니까? –

+0

해치가없는 원이 있지만 오류 메시지가 표시되지 않습니다. – Chris

답변

0

개의 결함 Set 키워드 hatchObj = blockObj.AddHatch(0, "Solid", True)

2) AppendOuterLoop 방법 누락

1

) 필요하며 loop 파라미터 그래서

용 오브젝트의 배열이있다 해치 섹션은 다음과 같아야합니다.

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