Ramesh PK Posted December 18, 2014 Share 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 Link to comment Share on other sites More sharing options...
RICVBA Posted December 18, 2014 Share 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 Link to comment Share on other sites More sharing options...
Ramesh PK Posted December 18, 2014 Author Share Posted December 18, 2014 Thanks for a quick response..! Quote Link to comment Share on other sites More sharing options...
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.