乐筑天下

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

与大家探讨如何用c#标住尺寸

[复制链接]
cgn

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2005-6-17 14:51:00 | 显示全部楼层 |阅读模式
感谢斑竹提供c#开发的方法,本人刚开始学习,现在兴趣很大,就学习中的一些问题和大家交流一下,不正确处请指教.
认真看了斑竹的学习资料后决定用AlignedDimension和LineAngularDimension2画个尺寸,开始用如下方法尝试:
Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();       
                        AlignedDimension dd1=new AlignedDimension();
                        dd1.XLine1Point=new Point3d(10,10,0);
                        dd1.XLine2Point=new Point3d(200,200,0);
                        dd1.DimLinePoint=new Point3d(100,100,0);
                        dd1.Oblique=120.00;
                        LineAngularDimension2 ll2=new LineAngularDimension2();
                        ll2.XLine1Start=new Point3d(10,10,0);
                        ll2.XLine1End=new Point3d(10,15,0);
                        ll2.XLine2Start=new Point3d(10,10,0);
                        ll2.XLine2End=new Point3d(20,15,0);
trans.AddNewlyCreatedDBObject(dd1,true);
trans.AddNewlyCreatedDBObject(ll2,true);
trans.Commit();
trans.Dispose();
可是调试错误,后来通过学习发现,在实体构造上出现问题(不明白line,circle如何就可以),需要重新构建,做如下修改就可:
构件实体函数:
public static ObjectId AddEntity(Entity ent)
{Transaction trans = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction();       
Database Db1=HostApplicationServices.WorkingDatabase;
try
{
BlockTable bt =
(BlockTable)trans.GetObject(Db.BlockTableId, OpenMode.ForWrite, false);
BlockTableRecord btr =
BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace],
OpenMode.ForWrite, false);
btr.AppendEntity(ent);
trans.AddNewlyCreatedDBObject(ent, true);
trans.Commit();
return ent.ObjectId;
}
}
catch (System.Exception e)
{
throw e;
}
}
将原计算方法修改为:
        AlignedDimension dd1=new AlignedDimension();
                        dd1.XLine1Point=new Point3d(10,10,0);
                        dd1.XLine2Point=new Point3d(200,200,0);
                        dd1.DimLinePoint=new Point3d(100,100,0);
                        dd1.Oblique=120.00;
                        LineAngularDimension2 ll2=new LineAngularDimension2();
                        ll2.XLine1Start=new Point3d(10,10,0);
                        ll2.XLine1End=new Point3d(10,15,0);
                        ll2.XLine2Start=new Point3d(10,10,0);
                        ll2.XLine2End=new Point3d(20,15,0);
ObjectId id = AddEntity(dd1);
                        ObjectId id1 = AddEntity(ll2);
就可以成功了.
真不明白autodesk公司为什么设计这么复杂,希望大家一起探讨.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 06:16 , Processed in 0.138082 second(s), 56 queries .

© 2020-2024 乐筑天下

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