Ramesh PK Posted December 18, 2014 Posted December 18, 2014 I use AutoCAD 2007 and program in VBA. Could you help with drawing cylinders in VBA. The "AddCylinder" draws only in WCS meaning I get cylinders in only one direction. I need cylinders to the UCS I set using the VBA program. Quote
RICVBA Posted December 18, 2014 Posted December 18, 2014 I use AutoCAD 2007 and program in VBA. Could you help with drawing cylinders in VBA. The "AddCylinder" draws only in WCS meaning I get cylinders in only one direction. I need cylinders to the UCS I set using the VBA program. you can rotate the cylinder after creating it here's a quick and dirty code combinating two AutoCAD Active X and VBA reference examples Option Explicit Sub AddAndRotateCylinder() ' This example creates a cylinder in model space. Dim cylinderObj As Acad3DSolid Dim radius As Double Dim center(0 To 2) As Double Dim height As Double ' Define the cylinder center(0) = 0#: center(1) = 0#: center(2) = 0# radius = 5# height = 20# ' Create the Cylinder (3DSolid) object in model space Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder(center, radius, height) ZoomAll MsgBox "Cylinder created" ' 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 ThisDrawing.Regen True ' Define the rotation axis with two points Dim rotatePt1(0 To 2) As Double Dim rotatePt2(0 To 2) As Double Dim rotateAngle As Double rotatePt1(0) = -3: rotatePt1(1) = 4: rotatePt1(2) = 0 rotatePt2(0) = -3: rotatePt2(1) = -4: rotatePt2(2) = 0 rotateAngle = 30 rotateAngle = rotateAngle * 3.141592 / 180# ' Draw a line between the two axis points so that it is visible. ' This is optional. It is not required for the rotation. Dim axisLine As AcadLine Set axisLine = ThisDrawing.ModelSpace.AddLine(rotatePt1, rotatePt2) axisLine.Update MsgBox "Rotate the box 30 degrees about the axis shown.", , "Rotate3D Example" ' Rotate the box cylinderObj.Rotate3D rotatePt1, rotatePt2, rotateAngle ThisDrawing.Regen True MsgBox "The cylinder is rotated 30 degrees.", , "Rotate3D Example" End Sub Quote
Ramesh PK Posted December 18, 2014 Author Posted December 18, 2014 Thanks for a quick response..! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.