乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 58|回复: 1

带角度画线

[复制链接]

8

主题

12

帖子

1

银币

初来乍到

Rank: 1

铜币
44
发表于 2021-2-2 10:34:34 | 显示全部楼层 |阅读模式
在这个例子中,我为dist和anger制作了2个双数组。我试图画它,但结果是错误的,不能用内部角度绘制需要帮助来绘制这个PromptPointOptions inspoint = new PromptPointOptions(“\nSpecify插入点:”);。
PromptPointResult presult = ed.GetPoint(inspoint);。
Point2d pinsert = new Point2d(presult.Value.X, presult.Value.Y);。
折线折线 2 = 新折线();。
多边形2.AddVertexAt(0, pinsert, 0, 0, 0);。
Point2d p2, pr;。
Point3d p3a, p3b;。
双角度转换;。
双 calc1, calc2, leang; 。
for (int i = 0; i 。
{。
angconvert = (dangle * 0.0174532925);                                        。
calc1 =Math.Abs( dline * Math.Cos(angconvert));。
calc2 = Math.Abs( dline * Math.Sin(angconvert));。
pr = poly2,GetPoint2dAt(i);。
if (dangle0)。
{。
p2 = new Point2d(pr.X + calc1, pr.Y + calc2);。
}。
else if (dangle  90)。
{。
p2 = new Point2d(pr.X - calc1, pr.Y + calc2);。
}。
else if (dangle  180)。
{。
p2 = new Point2d(pr.X - calc1, pr.Y - calc2);。
}。
还。
{。
p2 = new Point2d(pr.X + calc1, pr.Y - calc2);。
}。

多边形2.AddVertexAt(i + 1, p2, 0, 0, 0);                      。
                       。
}。
多边形2.闭合 = 真;。
断续器追加实体(poly2);。
反式,AddNewlyCreatedDBObject(poly2, true);。
                    。
反式,Commit();。
}。

knwdgcthvnv.png

knwdgcthvnv.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2021-2-2 16:19:41 | 显示全部楼层
试一试:   [command method(" drawline test ")]。
public void drawpline()。
{。
double[] dangle = { 147.27,218.65,54.49,120.02,300.87,64.39,66.02 };。
double[] dline = { 11.96,8.16,29.09,22.93,5.64,17.06,39.6 };。
var doc =应用,document manager . MdiActiveDocument;。
var ed = doc,编辑;。
PromptPointOptions inspoint = new PromptPointOptions(" \ n指定插入点:");。
PromptPointResult presult = ed,get point(inspoint);。
Point2d p1 =新的Point2d(presult,值,X,预设。value . Y);。
Polyline poly 2 = new Polyline();。
聚2,AddVertexAt(0,p1,0,0,0);。
Point2d nextPt = Point2d,起源;。
var lastDir = double,南;;。
for(int I = 0;我。
{。
var ang = dangle[i] * Math,PI/180.0;。
if (nextPt == Point2d,产地)。
{。
nextPt = GetPolarPoint(p1,ang,dline[I]);。
lastDir = ang。
}。
否则。
{。
尝试一下。
{。
lastDir = lastDir - Math,PI + (dangle[i] *数学,PI/180.0);。
nextPt = GetPolarPoint(nextPt,lastDir,dline[I]);。
}。
接住{ }。
}。
聚2,AddVertexAt(i + 1,nextPt,0,0,0);。

}。
聚2,Closed = true。
使用(Transaction trans = doc,database . transaction manager . start transaction())。
{。
var bt = (BlockTable)trans,GetObject(doc,Database.BlockTableId,OpenMode。for read);。
var btr = (BlockTableRecord)trans,GetObject(bt[BlockTableRecord,模型空间],开放模式。for write);。
btr,append entity(poly 2);。
运输,AddNewlyCreatedDBObject(poly2,true);。

运输,commit();。
}。

}。


///使用指定的角度和距离计算新点,应指定角度。
///从X轴逆时针旋转,。
/// 。
public point 2d GetPolarPoint(point 2d pt base,double angle,double distance)。
{。
返回新的Point2d(ptBase,X +(距离*数学,Cos(角度)),ptBase。Y +(距离*数学,Sin(角度)));。
}。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 04:00 , Processed in 0.219672 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表