2 つのソリッド間の干渉をチェックし、指定があれば、干渉からソリッドを作成します。
サポートされているプラットフォーム: Windows のみ
VBA:
RetVal = object.CheckInterference(Object, CreateInterferenceSolid, SolidsInterfere)
追加の注意はありません。
VBA:
Sub Example_CheckInterference() ' This example creates a box and a cylinder in model space. ' It then finds the interference between the two solids and ' creates a new solid from that interference. ' For ease of viewing, different colors are used for the box, the ' cylinder, and the interference solid. Dim color As AcadAcCmColor Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.20") Dim boxObj As Acad3DSolid Dim boxLength As Double, boxWidth As Double, boxHeight As Double Dim boxCenter(0 To 2) As Double boxCenter(0) = 5#: boxCenter(1) = 5#: boxCenter(2) = 0 boxLength = 10#: boxWidth = 7: boxHeight = 10# ' Create the box (3DSolid) object in model space Set boxObj = ThisDrawing.ModelSpace.AddBox(boxCenter, boxLength, boxWidth, boxHeight) Call color.SetRGB(80, 100, 244) boxObj.TrueColor = color ' Define the cylinder Dim cylinderObj As Acad3DSolid Dim cylinderCenter(0 To 2) As Double Dim cylinderRadius As Double Dim cylinderHeight As Double cylinderCenter(0) = 0#: cylinderCenter(1) = 0#: cylinderCenter(2) = 0# cylinderRadius = 5# cylinderHeight = 20# ' Create the Cylinder (3DSolid) object in model space Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder(cylinderCenter, cylinderRadius, cylinderHeight) Call color.SetRGB(244, 150, 50) cylinderObj.TrueColor = color ' Find the interference between the two solids and create a new solid from it Dim solidObj As Acad3DSolid Dim bSolidsInterfere As Boolean Set solidObj = boxObj.CheckInterference(cylinderObj, True, bSolidsInterfere) Call color.SetRGB(200, 150, 244) solidObj.TrueColor = color ' Change the viewing direction of the viewport Dim NewDirection(0 To 2) As Double NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1 ThisDrawing.ActiveViewport.direction = NewDirection ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport ZoomAll ' You can now delete the box and cylinder in AutoCAD to ' see the interference solid more clearly. End Sub
Visual LISP:
(vl-load-com) (defun c:Example_CheckInterference() ;; This example creates a box and a cylinder in model space. ;; It then finds the interference between the two solids and ;; creates a new solid from that interference. (setq acadObj (vlax-get-acad-object)) (setq doc (vla-get-ActiveDocument acadObj)) ;; For ease of viewing, different colors are used for the box, the ;; cylinder, and the interference solid. (setq color (vlax-create-object "AutoCAD.AcCmColor.20")) (setq boxCenter (vlax-3d-point 5 5 0) boxLength 10 boxWidth 7 boxHeight 10) ;; Create the box (3DSolid) object in model space (setq modelSpace (vla-get-ModelSpace doc)) (setq boxObj (vla-AddBox modelSpace boxCenter boxLength boxWidth boxHeight)) (vla-SetRGB color 80 100 244) (vla-put-TrueColor boxObj color) ;; Define the cylinder (setq cylinderCenter (vlax-3d-point 0 0 0) cylinderRadius 5 cylinderHeight 20) ;; Create the Cylinder (3DSolid) object in model space (setq cylinderObj (vla-AddCylinder modelSpace cylinderCenter cylinderRadius cylinderHeight)) (vla-SetRGB color 244 150 50) (vla-put-TrueColor cylinderObj color) ;; Find the interference between the two solids and create a new solid from it (setq solidObj (vla-CheckInterference boxObj cylinderObj :vlax-true :vlax-true)) (vla-SetRGB color 200 150 244) (vla-put-TrueColor solidObj color) ;; Change the viewing direction of the viewport (setq NewDirection (vlax-3d-point -1 -1 1)) (setq activeViewport (vla-get-ActiveViewport doc)) (vla-put-Direction activeViewport NewDirection) (vla-put-ActiveViewport doc activeViewport) (vla-ZoomAll acadObj) ;; You can now delete the box and cylinder in AutoCAD to ;; see the interference solid more clearly. (vlax-release-object color) )