CaveMan 发表于 2022-7-6 22:35:53

在UCS上绘制圆弧

很好的一天
 
一个程序如何绘制圆弧(点、半径、角度、角度)
 
根据WCS不断绘制弧?角度也与WCS有关。如果从两点3D绘制直线-ucs没有问题-但即使用户已更改为ucs,圆弧和圆仍保留为WCS?
 
是,这里需要帮助
即使只是一个简单的例子,在当前用户UCS上画一个弧也会很棒
 
干杯
穴居人

BlackBox 发表于 2022-7-6 23:04:33

这些链接可能有用:
 
AutoCAD。NET开发者指南,这里有一个片段:
 
 
将角度从UCS转换为WCS
 
计算UCS和WCS之间的角度
 
HTH公司

CaveMan 发表于 2022-7-6 23:19:27

干杯谢谢提供的源代码
有机会的时候我会复习的
 
下面是我创建的两个公共模块,它们同样有效。
用红色加高是我的错误-Arc未转换为当前ucs。
 
______________________________________________________________________
 

Code:

PublicModule ModDrawArc
FriendFunction DrawArc(ByVal startPoint As Point3d, ByVal Radius AsDouble, ByVal StartAngle AsDouble, ByVal EndAngle AsDouble) As Arc
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
acDoc.LockDocument()
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim acBlkTbl As BlockTable
acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead)
Dim acBlkTblRec As BlockTableRecord
acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)
Dim acArc As Arc = New Arc(startPoint, Radius, StartAngle, EndAngle)
acArc.TransformBy(GetUcsMatrix(acCurDb))
acBlkTblRec.AppendEntity(acArc)
acTrans.AddNewlyCreatedDBObject(acArc, True)
acTrans.Commit()
EndUsing
EndFunction
_____________________________________________________________

FriendFunction GetUcsMatrix(ByVal db As Database) As Matrix3d
Dim origin As Point3d = db.Ucsorg
Dim xAxis As Vector3d = db.Ucsxdir
Dim yAxis As Vector3d = db.Ucsydir
Dim zAxis As Vector3d = xAxis.CrossProduct(yAxis)
Return Matrix3d.AlignCoordinateSystem(Point3d.Origin, Vector3d.XAxis, Vector3d.YAxis, _
Vector3d.ZAxis, origin, xAxis, yAxis, zAxis)
EndFunction

欣赏
干杯
穴居人

SLW210 发表于 2022-7-6 23:46:11

穴居人
 
请阅读代码发布指南并编辑您的帖子。
页: [1]
查看完整版本: 在UCS上绘制圆弧