乐筑天下

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

[分享]绘制剖断线(C#)

[复制链接]

52

主题

380

帖子

11

银币

中流砥柱

Rank: 25

铜币
588
发表于 2009-11-26 16:05:00 | 显示全部楼层 |阅读模式
[code]
using System;
using System.Text;
using Autodesk..ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace CsMgd1
{
    public class Class1
    {
        Database db = HostApplicationServices.WorkingDatabase;
        Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
        [CommandMethod("Test")]
        public void Test()
        {
            ed.WriteMessage("\n绘制剖断线  By carrot1983");
   PromptPointResult proPtRes1;
   PromptPointOptions proPtOpts1 = new PromptPointOptions("\n指定第一点: ");
   proPtRes1 = ed.GetPoint(proPtOpts1);
   Point3d pt1 = proPtRes1.Value;
   PromptPointResult proPtRes2;
   PromptPointOptions proPtOpts2 = new PromptPointOptions("\n指定第二点: ");
            proPtOpts2.UseDashedLine = true;
   proPtOpts2.UseBasePoint = true;
            proPtOpts2.BasePoint = pt1;
   proPtRes2 = ed.GetPoint(proPtOpts2);
   Point3d pt2 = proPtRes2.Value;
            Point2dCollection pts = GetPoDuanPoints(pt1, pt2);
            ObjectId pline = AddPline(pts, 0.0);
        }
        //取得两点间角度
        public static double Get2PointsAngle(Point3d pt1, Point3d pt2)
        {
            Vector3d v1 = pt1.GetVectorTo(pt2);
            return v1.GetAngleTo(Vector3d.XAxis);
        }
        //按方向和距离求取点
        public static Point3d PolarPoint(Point3d basePt, double angle, double distance)
        {
            double[] pt = new double[3];
            pt[0] = basePt[0] + distance * Math.Cos(angle);
            pt[1] = basePt[1] + distance * Math.Sin(angle);
            pt[2] = basePt[2];
            Point3d point = new Point3d(pt[0], pt[1], pt[2]);
            return point;
        }
        //计算剖断线的顶点表
        public static Point2dCollection GetPoDuanPoints(Point3d pt1, Point3d pt2)
        {
             double ang = Get2PointsAngle(pt1, pt2);
             Point3d leftPt = PolarPoint(pt1, ang+Math.PI, 56);
             Point3d rightPt = PolarPoint(pt2, ang, 56);
             Point3d middlePt = new Point3d((leftPt.X + rightPt.X) * 0.5, (leftPt.Y + rightPt.Y) * 0.5, (leftPt.Z + rightPt.Z) * 0.5);
             Point3d leftPt1 = PolarPoint(middlePt, ang + Math.PI, 26);
             Point3d leftPt2 = PolarPoint(PolarPoint(middlePt, ang + Math.PI, 12), ang + Math.PI * 0.5, 44);
             Point3d rightPt1 = PolarPoint(middlePt, ang, 26);
             Point3d rightPt2 = PolarPoint(PolarPoint(middlePt, ang, 12), ang + Math.PI * 1.5, 44);
             Point2dCollection pts = new Point2dCollection();
             pts.Add(new Point2d (leftPt.X,leftPt.Y));
             pts.Add(new Point2d(leftPt1.X, leftPt1.Y));
             pts.Add(new Point2d(leftPt2.X, leftPt2.Y));
             pts.Add(new Point2d(rightPt2.X, rightPt2.Y));
             pts.Add(new Point2d(rightPt1.X, rightPt1.Y));
             pts.Add(new Point2d(rightPt.X, rightPt.Y));
             return pts;
        }
        // 由二维点集合和线宽创建二维优化多段线的函数.
        public static ObjectId AddPline(Point2dCollection pts, double width)
        {
            try
            {
                int n = pts.Count;
                Polyline ent = new Polyline();
                for (int i = 0; i 将Lisp的运行结果图片贴上让看看,不知道啥叫剖断线
回复

使用道具 举报

2

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
15
发表于 2009-11-26 17:42:00 | 显示全部楼层
你的这个剖断线跟剖面图是不是一个东西的
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2009-12-9 15:49:00 | 显示全部楼层
不能设置比例,不太好
回复

使用道具 举报

1

主题

8

帖子

4

银币

初来乍到

Rank: 1

铜币
12
发表于 2013-6-23 21:32:00 | 显示全部楼层
路过并表示强烈支持!
回复

使用道具 举报

9

主题

24

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2014-5-6 23:14:00 | 显示全部楼层
角度转换有问题
回复

使用道具 举报

1

主题

7

帖子

3

银币

初来乍到

Rank: 1

铜币
11
发表于 2014-5-27 16:49:00 | 显示全部楼层
萝卜兄转战.NET了?你的拉移随心已经成名已久啦!你的剖断线程序,我测试了是后面的角度转换有问题,改过后就行了。不知道你解决没有?复制代码
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 21:24 , Processed in 0.757121 second(s), 64 queries .

© 2020-2025 乐筑天下

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