乐筑天下

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

TlsBasal(基础类库,开源部分代码)

[复制链接]

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-5-17 23:45:00 | 显示全部楼层 |阅读模式
(2012/12/22)
](2012/12/12)
2010/12/12
增强DBTransaction类
添加TlsBasal.Xml程序注释文件
2010/10/29
少许更新,加强扩展函数调用
2010/4/24
VS2008/2008以上
加入扩展方法支持
集成ResultList/ResultTree集合类
集成可序列化集合类SerialList
2009/6/20
修正曲线转换类
  1.         [CommandMethod("Tls:BAC")]
  2.         public static void BreakAllCurve()
  3.         {
  4.             using (DBTransaction t = new DBTransaction())
  5.             {
  6.                 PromptSelectionResult res = Helper.Editor.GetSelection(
  7.                     new PromptSelectionOptions(),
  8.                     new SelectionFilter(
  9.                         new TypedValue[] {
  10.                             new TypedValue(0, "*Line,Arc,Circle,Ellipse") }));
  11.                 List ids = new List(res.Value.GetObjectIds());
  12.                 List objs = BreakCurve(ref ids);
  13.                 t.OpenCurrentSpace();
  14.                 t.AddEntity(objs);
  15.                 t.Remove(ids);
  16.             }
  17.         }
  18.         public static List BreakCurve(ref List ids)
  19.         {
  20.             List dbCurves = new List();
  21.             List geCurves = new List();
  22.             List> paramss = new List>();
  23.             for (int i = 0; i ());
  24.             }
  25.             List oldids = new List();
  26.             List objs = new List();
  27.             CurveCurveIntersector3d cci3d = new CurveCurveIntersector3d();
  28.             for (int i = 0; i  pars1 = paramss[i];
  29.                 for (int j = i; j  pars2 = paramss[j];
  30.                     cci3d.Set(gc1, gc2, Vector3d.ZAxis);
  31.                     for (int k = 0; k  0)
  32.                 {
  33.                     List c3ds = GeUtility.GetSplitCurves(gc1, pars1);
  34.                     if (c3ds.Count > 1)
  35.                     {
  36.                         foreach (CompositeCurve3d c3d in c3ds)
  37.                         {
  38.                             Curve c = ConvertCurve.ToCurve(c3d);
  39.                             c.SetPropertiesFrom(dbCurves[i]);
  40.                             objs.Add(c);
  41.                         }
  42.                         oldids.Add(ids[i]);
  43.                     }
  44.                 }
  45.             }
  46.             ids = oldids;
  47.             return objs;
  48.         }
2009/6/18
更新版本
增加ConvertCurve类
支持DbCurve 与 GeCurve 互转
但二维样条化多段线的转换不太成功
支持AutoCad2008版本以上,低版本未测试
1、DBTransaction类
简化AutoCad托管程序写法的自定义类,封装了一些常用的函数,完善中
2009/5/27完善Ucs下属性块插入
用法的示例
  1.         [CommandMethod("BAC")]
  2.         public static void BreakAllCurve()
  3.         {
  4.             PromptSelectionResult res =
  5.                 CadHelper.Editor.GetSelection(
  6.                 new PromptSelectionOptions(),
  7.                 new SelectionFilter(new TypedValue[] {
  8.                     new TypedValue(0, "*Line,Arc,Circle,Ellipse") }));
  9.             ObjectId[] ids = res.Value.GetObjectIds();
  10.             ObjectIdCollection oldids = new ObjectIdCollection();
  11.             using (DBTransaction t = new DBTransaction())
  12.             {
  13.                 t.OpenCurrentSpace();
  14.                 foreach (ObjectId i in ids)
  15.                 {
  16.                     List pars = new List();
  17.                     Curve iCurve = (Curve)t.GetObject(i, OpenMode.ForRead);
  18.                     foreach (ObjectId j in ids)
  19.                     {
  20.                         if (i != j)
  21.                         {
  22.                             Curve jCurve = (Curve)t.GetObject(j, OpenMode.ForRead);
  23.                             Point3dCollection iwpnts = new Point3dCollection();
  24.                             iCurve.IntersectWith(jCurve, Intersect.OnBothOperands, iwpnts, 0, 0);
  25.                             foreach (Point3d p in iwpnts)
  26.                             {
  27.                                 pars.Add(iCurve.GetParameterAtPoint(p));
  28.                             }
  29.                         }
  30.                     }
  31.                     if (pars.Count > 0)
  32.                     {
  33.                         pars.Sort();
  34.                         try
  35.                         {
  36.                             t.AddEntity(iCurve.GetSplitCurves(new DoubleCollection(pars.ToArray())));
  37.                             oldids.Add(i);
  38.                         }
  39.                         catch
  40.                         { }
  41.                     }
  42.                 }
  43.                 t.Remove(oldids);
  44.             }
  45.         }

2、BlockPreview类
预览图像(块定义/图元集合)
将下面的文件Copy到d盘根目录下
3、TlsCad.Preferences名称空间
提供反射获取Cad环境变量的一些静态类,
当然你也可以使用Com引用获取Cad环境变量
调用方式复制代码
4、TlsCad.Utils名称空间
提供一些常用函数调用


TlsBasal 0.1 测试版发布
TlsBasal 0.1 测试版发布

nowc1lzsmwb.JPG

nowc1lzsmwb.JPG

TlsBasal 0.1 测试版发布

sfaouosvegn.JPG

sfaouosvegn.JPG

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

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

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2016-9-26 13:57:00 | 显示全部楼层
这个功能有点用,可以借用一下
回复

使用道具 举报

1

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
17
发表于 2020-4-2 11:56:00 | 显示全部楼层
学习了  码上
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-5-27 17:15:00 | 显示全部楼层

0.2测试版
2009/5/27
更正ucs下属性块的插入
下面是一段简单的测试代码
  1.         [CommandMethod("tt2")]
  2.         public static void Test10()
  3.         {
  4.             using (DBTransaction tr = new DBTransaction())
  5.             {
  6.                 ObjectId blkdefid = tr.AddBlock("*T");
  7.                 tr.OpenBlockTableRecord(blkdefid);
  8.                 tr.AddEntity(new Line(Point3d.Origin, new Point3d(10, 0, 0)));
  9.                 tr.OpenTextStyleTable();
  10.                 AttributeDefinition attdef =
  11.                     new AttributeDefinition(
  12.                         Point3d.Origin,
  13.                         "Test",
  14.                         "A1",
  15.                         "Input A1",
  16.                         tr.TextStyleTable["Standard"]);
  17.                 attdef.Height = 5;
  18.                 tr.AddEntity(attdef);
  19.                 tr.OpenCurrentSpace();
  20.                 if (blkdefid != ObjectId.Null)
  21.                 {
  22.                     List atts = new List();
  23.                     atts.Add("This is a Test");
  24.                     tr.InsertBlock(blkdefid, atts);
  25.                 }
  26.             }
  27.         }

回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-5-30 10:32:00 | 显示全部楼层

TlsCad开源部分的代码:
曲线转换类
DBTransaction类
曲线专贴
2009/5/30
增强动画录制功能,可以将动作保存为动态Gif文件或多帧Tiff
点击 开始 录制
点击 停止 将在C盘下保存两个文件

evkzqbkxqqy.gif

evkzqbkxqqy.gif


将BlockView的窗体代码改下:)[code]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Imaging;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using TlsCad.Image;
[assembly: CommandClass(typeof(TlsCad.frmBlockPreview))]
namespace TlsCad
{
    public partial class frmBlockPreview : Form
    {
        BlockPreviewCollection m_BlockPreviews;
        private ImageCreator m_Gif;
        private ImageCreator m_Tiff;
        public frmBlockPreview()
        {
            InitializeComponent();
            m_BlockPreviews =
                new BlockPreviewCollection(
                    "D:\\TlsCad.dwg",
                    Autodesk.AutoCAD.GraphicsSystem.RenderMode.GouraudShaded,
                    VisualStyleType.Gouraud);
            m_BlockPreviews.BackColor = Color.White;
            List ents = new List();
            Line line = new Line(Point3d.Origin, new Point3d(0, 10.5, 0));
            line.SetDatabaseDefaults();
            ents.Add(line);
            Circle cir = new Circle(Point3d.Origin, Vector3d.ZAxis, 14);
            cir.SetDatabaseDefaults();
            ents.Add(cir);
            Line line1 = new Line(new Point3d(11, 0, 0), new Point3d(14, 0, 0));
            Line line2 = new Line(new Point3d(13, 0, 0), new Point3d(14, 0, 0));
            line1.SetDatabaseDefaults();
            line2.SetDatabaseDefaults();
            double angle = Math.PI / 30;
            for (int i = 0; i
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:lh3alugvjut.rar 
下载次数:0  文件大小:29.08 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]



TlsBasal 0.2测试版
TlsBasal 0.2测试版

gclsfxhphib.gif

gclsfxhphib.gif

回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-6-3 00:26:00 | 显示全部楼层

BlockView挺有意思的:),简单的做了个方块测试下

opncq3awlle.gif

opncq3awlle.gif


把测试代码还是放上吧,同时Debug目录下有TlsBasal.dll的新版本
这让我想起了自己编的第一个程序就是方块,哈哈
方块测试结束
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:mxt2qvv02m4.rar 
下载次数:0  文件大小:67.65 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


TlsBasal 0.2测试版

ps0elddmeqe.gif

ps0elddmeqe.gif


pnq3khi5t2x.gif

pnq3khi5t2x.gif

回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-6-4 21:54:00 | 显示全部楼层
测试过程发现的一个问题
无标题栏的窗体调整位置真麻烦,干脆用代码把它固定住
            Window w = ACadApp.DocumentManager.MdiActiveDocument.Window;
            Point pnt = w.Location;
            Size size = w.Size;
            pnt.X += (size.Width - 505);
            pnt.Y += (size.Height - 622);
            string bounds = pnt.X + "," + pnt.Y + ",502,602";
            UserConfigurationManager ucm = ACadApp.UserConfigurationManager;
            IConfigurationSection ds = ucm.OpenDialogSection(this);
            ds.WriteProperty("Bounds", bounds);
不知道有没有更好的办法?
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2009-6-18 11:48:00 | 显示全部楼层
2009/6/18
更新版本
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-7-16 18:09:00 | 显示全部楼层
太有才了.
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2009-7-18 18:23:00 | 显示全部楼层
老大.你文件没有发完啊.我搞二十分钟.都不知怎么开始.是不是自己再组合代码?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2024-11-22 01:12 , Processed in 0.203335 second(s), 83 queries .

© 2020-2024 乐筑天下

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