明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3713|回复: 14

[.net群] 2013-11-14 明经 AutoCAD.NetApi (2474812) 群聊记录:谁开发过图形库的程序

 关闭 [复制链接]
发表于 2013-11-14 01:53:02 | 显示全部楼层 |阅读模式
阿秦 01:53:02
谁开发过图形库的程序
 楼主| 发表于 2013-11-14 04:47:04 | 显示全部楼层
[ARX]小山 04:47:04
我开发过,怎么地
 楼主| 发表于 2013-11-14 07:46:37 | 显示全部楼层
[VB&c++]阿华 07:46:37
这个容易吧
 楼主| 发表于 2013-11-14 09:24:55 | 显示全部楼层
[yanbinyanbin88][C#]爱好者 09:24:55
[qqimg]201311/{E6B65C11-6275-0923-D153-2A621F417BB0}.jpg[/qqimg]
[qqimg]201311/{1ED5FD8E-CE23-7E4C-5959-DBEE3927B63C}.jpg[/qqimg]
请问下,能不能有方法让颜色以RGB的格式显示
[VB&c++]阿华 09:29:38
那是不可能的,在对话框中以rgb格式表达到是可以的
[VB&c++]阿华 09:31:22
得到三元色以后,输出到对话框
[yanbinyanbin88][C#]爱好者 09:31:59
如何操作?
我是菜鸟的
Owen 09:36:52
请教一下, C#中创建块 和 插入块应该用哪几个方法?
从〇开始 09:37:32
这些问题你先把基础掌握都就解决了
[yanbinyanbin88][C#]爱好者 09:39:42
我就是没基础呀,.搞了一夜也搞不定
一夜停...
Owen 09:40:33
可以先查查手册 和 auocad的 developer guide
这些比较系统些,里面找不到话,只能网上搜和问了
[C#]小罗 09:42:24
把你的代码贴出来看看
[vb.net]PPYYFF 09:50:32
我只知道VBA(COM)方式的调用
[vb.net]PPYYFF 09:54:26
MyColor = AcadApp.GetInterfaceObject("AutoCAD.AcCmColor.17")
            Call MyColor.SetRGB(Color.Red, Color.Green, Color.Blue)
newlayer.TrueColor = MyColor
这样就能设置真彩色了
VB中关键是GetInterfaceObject调用
C#中估计也一样
[vb.net]PPYYFF 09:55:57
Color.Red是我自己定义的一个颜色结构体
[VB&c++]阿华 09:56:23
都一样的
[yanbinyanbin88][C#]爱好者 09:58:24
好的,,
谢谢
[vb.net]PPYYFF 09:59:03
我的是cad2007
你的要对应
[yanbinyanbin88][C#]爱好者 10:00:49
我的是2006的
[yanbinyanbin88][C#]爱好者 10:01:45
PPYYFF 请问你是搞开发的吗
[vb.net]PPYYFF 10:02:07
不是,我是偶尔做做自己玩的
[yanbinyanbin88][C#]爱好者 10:02:39
哦,,你是做哪行的
[vb.net]PPYYFF 10:03:08
做水利的穷行业
C# 阿良 10:03:34
11点
[C#]太阳 10:04:08
P1 = (0,0,0) 2 = (0,10,0) 3 = (10,0,0)
Line L1 =  new Line(p1,p2)
Line L2 =  new Line(p1,p3)
我用
br.TransformBy(Matrix3d.Mirroring(L1))

br.TransformBy(Matrix3d.Mirroring(L2))
为什么得到的都是左右镜像?   按理是不是一个是上下镜像啊
[yanbinyanbin88][C#]爱好者 10:05:15
我有同事,做水的很赚哦
城市规划的
[vb.net]PPYYFF 10:06:24
中国的 规划=鬼话,就是把钱哄到自己口袋的专业
[vb.net]雷闪电族 10:06:39
里面还有做水利的呀,
[yanbinyanbin88][C#]爱好者 10:06:40
哈,同感,
[vb.net]PPYYFF 10:07:52
我们有个老领导去年退休后,才说实话,他说一切规划项目都是 借“规划之手进行利益再分配而已“
[vb.net]PPYYFF 10:08:40
所以规划只管去找各种理由使项目成立。
[yanbinyanbin88][C#]爱好者 10:09:31
利益最终还是流向有权有钱的人去的,,这就是中国
[vb.net]PPYYFF 10:09:33
尤其是城市规划,道路不停的开挖-回填-开挖。。。。。
[yanbinyanbin88][C#]爱好者 10:09:57
每个领导上台,都要搞一个大项目的
[vb.net]PPYYFF 10:11:30
所以这年头到处都是雾霾。那些个专家还欺负老百姓烧了点桔杆,做了点中国式的饭,就把雾霾造出来了!
[yanbinyanbin88][C#]爱好者 10:12:01
更可怕的是,,转基因.
[vb.net]PPYYFF 10:12:53
不过还是挺佩服农业部的官员,还有点良心,正真落地种植的转基因还不多
[yanbinyanbin88][C#]爱好者 10:14:17
转基因棉花还可以接受,,,,入口的很难接受呀,虫子这么敏感的都不敢吃了,,,,,,,人吃久了,,身体肯定有变化的
[vb.net]PPYYFF 10:15:10
现在吃得好像都标记了,只不过是字体有点小
[C#]猴子 10:15:25
转基因作物是没有确认对人有没有影响,不是一定有,也不是一定没有,没有必要谈转基因色变
[vb.net]PPYYFF 10:16:11
不要紧,李总理用高铁技术换回了泰国大米,我们主要口粮不会有的
[yanbinyanbin88][C#]爱好者 10:17:45
要推基因作物,也要主要原因就是中国人口太多了
[vb.net]PPYYFF 10:17:53
人类发展史经理了上百万年,选定的这几种能吃的,肯定是有道理,这个时候去改变他的基因肯定会出问题的,不过从随机数来看,也许能促进人类进化,也许把我们打回原形
风险太大了,
[yanbinyanbin88][C#]爱好者 10:18:35
同意,
[yanbinyanbin88][C#]爱好者 10:19:31
这次三中全会.......开得静悄悄的........
没听到对老百姓有利好的
[zhengjian211]疯狂青蛙 10:20:12
唯一满意的 闻到火药味了
[menxin][C#]menxin 10:20:22
以前没静悄悄,实际呢
[zhengjian211]疯狂青蛙 10:20:27
洪磊复读机滚蛋
[yanbinyanbin88][C#]爱好者 10:21:09
现在静悄悄的,后面可能更惨
还要搞多一轮土改......
宅基地可以流通,进入市场了
[vb.net]PPYYFF 10:21:55
没事,社会稳定就行
[yanbinyanbin88][C#]爱好者 10:22:14
宅基地可以流通,进入市场了  你们看出来了没?什么性质
[vb.net]PPYYFF 10:23:06
没啥,农村都没几个人了,流转个啥,就是发达地区,城中村或周边村有点用
[yanbinyanbin88][C#]爱好者 10:23:45
边远的宅基地,谁要
要来干嘛
主要是城市周边的宅基地..
[yanbinyanbin88][C#]爱好者 10:24:31
这个是没有使用年限的.......政府眼红,眼急了
[沪C#]新手求导 10:24:57
人民币对不起老百姓啊
[vb.net]PPYYFF 10:25:14
[qqimg]201311/{42EB2749-9D98-FF54-908C-71169701CB3C}.jpg[/qqimg]
央视的记者还真不错的
[yanbinyanbin88][C#]爱好者 10:26:20
衣服穿得太多了
[C#]风吹桥动 10:27:28
宅基地流转,只能在农村户口的人群中流转,
跟你我没关系
VB|C#DUMMY 10:27:58
本来就是能在农村户口中流转。
[yanbinyanbin88][C#]爱好者 10:28:07
以前是这样的,
[yanbinyanbin88][C#]爱好者 10:28:49
[qqimg]201311/{CC5BBD33-E648-0C8D-6B70-79200E731059}.jpg[/qqimg]
[yanbinyanbin88][C#]爱好者 10:29:36
政府会想办法,把你手中的土地"流动"的
[VB.NET/VBA津]绒绒 10:31:14
最后全部国有化!这是根本目的!
[yanbinyanbin88][C#]爱好者 10:31:57
毛时代把土地给了百姓,,
现在又要收回去了
[yanbinyanbin88][C#]爱好者 10:35:12
今天三中全会,都没有提到房价..
[yanbinyanbin88][C#]爱好者 10:35:50
估计政府还想要靠土地吸百姓血汗.
[VB&c++]阿华 10:41:00
耕者有其田
[yanbinyanbin88][C#]爱好者 10:41:46
阿华同志,,,不要太天真了..
[zhengjian211]疯狂青蛙 10:42:04
提高农产品价格
提高农民地位
减少城乡差异
不然城市房价是个无底洞
[xingang1005][C#]星光 10:43:37
我家的18亩水田已经被各种理由给回收了
[zhengjian211]疯狂青蛙 10:43:50
不过农产品价格的大头都被政府赚走了
[VB.NET/VBA津]绒绒 10:43:54
农民很快要失去他们的土地了
[zhengjian211]疯狂青蛙 10:43:55
运输
 楼主| 发表于 2013-11-14 11:06:48 | 显示全部楼层
[yanbinyanbin88][C#]爱好者 11:06:48
疯狂青蛙(275171906)  10:41:42
提高农产品价格
疯狂青蛙(275171906)  10:41:48
提高农民地位
疯狂青蛙(275171906)  10:41:53
减少城乡差异
哈,,好像官这话一样..
Owen 11:07:02
请问一下, c#对中CAD中的对象类型可以怎么转换?
ObjectId idb = ids_line[j];
                            if (ida.ObjectClass.DxfName == "LWPolyline")
                            {
                                olyline lb = acTrans.GetObject(idb, OpenMode.ForRead) as olyline;
                            }
                            else
                            { 
                                Curve lb = acTrans.GetObject(idb, OpenMode.ForRead) as Curve;
                            }
比如上面的代码,我不知道lb是直线还是多段线,所以判断一下再定义变量
但这样的话,定义在if里面变量在外面不能用, 在if之前定义变量的化,类型又是个问题
[zhengjian211]疯狂青蛙 11:08:37
先全部用curve
Owen 11:09:05
我到时要遍历polyline顶点
curve可以强制转换成polyline么?
要不没法访问polyline的方法和属性啊
Owen 11:09:58
被编译语言搞晕了, 以前用脚本都不管这样,不用声明对象类型的
[zhengjian211]疯狂青蛙 11:12:48
你不试怎么知道
Owen 11:13:28
查了一下, 强制转换都是从继续类转换到基类
[VB.NET/VBA津]绒绒 11:13:42
Dim ent As Object = trans.GetObject(roadID, OpenMode.ForRead)
            If TypeOf ent Is olyline Then
            DIM oly AS OLYLINE=ENT
Owen 11:13:45
curve是polyline的基类,
[zhengjian211]疯狂青蛙 11:14:35
public class olyline : Autodesk.AutoCAD.DatabaseServices.Curve
    Member of Autodesk.AutoCAD.DatabaseServices
[yanbinyanbin88][C#]爱好者 11:14:55
[qqimg]201311/{5039210F-18CA-0EE3-5CA9-5CB7E84709C5}.jpg[/qqimg]
青蛙,请问下,这是什么问题
[VB&c++]阿华 11:15:07
如果已经判断出是某类,可以转成这个类的
Owen 11:15:44
[qqimg]201311/{8BFE905B-2181-4663-1E10-E5B0D0E12354}.jpg[/qqimg]
Owen 11:17:28
[qqimg]201311/{04E5F45C-3B51-A653-FCAC-FF2A7E39CB45}.jpg[/qqimg]
Owen 11:18:32
不过变量不能声明两次?
 楼主| 发表于 2013-11-14 11:42:31 | 显示全部楼层
[yanbinyanbin88][C#]爱好者 11:42:31
EntityColor
与  Color 有什么区别吗
 楼主| 发表于 2013-11-14 13:05:43 | 显示全部楼层
[yanbinyanbin88][C#]爱好者 13:05:43
short sss=hat.EntityColor.ColorIndex;
                  
                         Color aa = Color.FromColorIndex(ColorMethod.ByLayer ,sss);
请问下,FromColorIndex是可以将索引色转为RGB吗
从〇开始 13:06:51
都写出来自己试试不就知道了
[yanbinyanbin88][C#]爱好者 13:07:04
我试了,,不行呀
 楼主| 发表于 2013-11-14 13:45:14 | 显示全部楼层
Owen 13:45:14
搞了半天,终于完成了自己的第一个cad 插件
InsertPileByAxis,应该已经有人做过同样的东西了
[VB&c++]阿华 13:45:58
秀一下
[vb.net]PPYYFF 13:46:51
秀一下
Owen 13:47:34
没多少行代码,以前没用过C#,看了两天语法,对着AUTODESK的develop guide 和 chm的参考文件写出来的
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using System.Collections;
using System.Collections.Generic;

namespace InsertPileByAxis
{
    public class Class1
    { 
        [CommandMethod("InsertPile")]
        public void InsertPile()
        {
            Document acDoc = Application.DocumentManager.MdiActiveDocument;
            Editor acEd = acDoc.Editor;
            Database acDb = acDoc.Database; 
            acEd.WriteMessage("hellocad is running here");
            
            using ( Transaction acTrans = acDoc.TransactionManager.StartTransaction())
            {
                TypedValue[] acTypes = new TypedValue[]{
                                                     new TypedValue((int)DxfCode.Operator,"")
                };
                SelectionFilter filter = new SelectionFilter(acTypes);
                romptSelectionResult acSSRees = acDoc.Editor.GetSelection(filter);
                if ( acSSRees.Status == romptStatus.OK)
                {
                    List points = new List();
                    int n_lines = acSSRees.Value.Count;
                    acEd.WriteMessage ( "how many selected " + n_lines);

                    ObjectId[] ids_line = acSSRees.Value.GetObjectIds();
                    for(int i=0;i < n_lines-1;i++)
                    {
                        ObjectId ida = ids_line;
                        Curve la = acTrans.GetObject(ida, OpenMode.ForRead) as Curve;
                        for(int j=i+1; j
从〇开始 13:48:21
show   插件功能展示,不需要代码
[VB&c++]阿华 13:48:37
这个谁看啊
Owen 13:48:45
哈哈
[VB&c++]阿华 13:48:49
图片
动画
Owen 13:49:22
[qqimg]201311/{6E066437-A5CA-328D-1074-E4FAD6952BC2}.jpg[/qqimg]
[qqimg]201311/{20F71795-5F3F-1627-EA81-20E6B97C0ABC}.jpg[/qqimg]
Owen 13:50:34
只有一个问题不完美, 我是做市政道路的, 道路给的线太碎了,很费时间,有什么能快点?
[qqimg]201311/{FA7D6EFA-0D6A-5E0D-7E12-B6E6B2FF6801}.jpg[/qqimg]
看道路的线选中后这么多顶点
[VB&c++]阿华 13:52:37
是在交点插块吗?
[C# PY] OEN 13:52:58
[C# PY] OEN 13:53:51
但道路的的拟合线很多时候都很碎,一根线顶点太多了,循环很费时间,有什么好主意对这种线进行优化?
从〇开始 13:54:31
这个和顶点什么关系
[vb.net]PPYYFF 13:54:45
道路设计都用civi 3d做
[C# PY] OWEN 13:54:48
[qqimg]201311/{22ADA4EA-4922-6626-D6C8-AEE8DEF8D36F}.jpg[/qqimg]
你能看到这种线吗?
[VB.NET/VBA津]绒绒 13:54:59
重新生成道路线,去掉挨得太近的点
[C# PY] OWEN 13:55:08
求交点的时候,多段线的顶点太多了,影响效率
[VB.NET/VBA津]绒绒 13:55:16
等高线也有这样的问题
[C# PY] OWEN 13:55:36
这是条件图,道路提供的条件就是这样子的,
要处理只能是我这边再处理这种线了
从〇开始 13:55:59
求交点是线为整体
和顶点没关系,又不遍历
[C# PY] OWEN 13:56:29
你试试就知道了,一根直线如果你用1000条短线连成的多段线代替
从〇开始 13:56:47
[C# PY] OWEN 13:56:59
求交点,如果是多段线的话,肯定也得根据里面的每个  segment一段段去算
从〇开始 13:57:03
你先连接处理
[VB.NET/VBA津]绒绒 13:57:04
点多了是影响效率
从〇开始 13:57:14
[VB.NET/VBA津]绒绒 13:57:38
而且影响很大,自己编程处理一下,不难编
[C# PY] OWEN 13:58:06
从〇开始 13:58:08
肯定不能删点,那就变形了,要不就连接处理,你想多了
[C# PY] OWEN 13:58:38
本来就是一根连起来的多段线
[VB.NET/VBA津]绒绒 13:58:46
你可以模仿飞时达,里面有多段线删除掉多余的点的程序
从〇开始 13:59:05
这个不会有太多重复点
[C# PY] OWEN 13:59:15
这种线一般是带缓和曲线的,里面碎碎的地方都是小圆弧,不是直线
从〇开始 13:59:19
难道你说的是抽稀,那就变形了
[VB.NET/VBA津]绒绒 13:59:42
是的
[C# PY] OWEN 14:00:05
其实变形无所谓,做隧道,只要能把限界包住就行了,施工的时候也不可能做的很细
[VB.NET/VBA津]绒绒 14:00:30
搞道路工程的不需要有多么精确
从〇开始 14:00:35
你现在需要做的是连接,不是删点
[C# PY] OWEN 14:00:53
已经和你说过,本来就是连好的线
从〇开始 14:01:22
一条线求交点效率不会影响很大
难道你测试过?
[VB.NET/VBA津]绒绒 14:01:36
我试验过
[C# PY] OWEN 14:01:53
没测试过讨论这个问题干嘛,又不是凭空出来的想法
[VB.NET/VBA津]绒绒 14:02:03
点多了很慢
[C# PY] OWEN 14:02:11
类似的情况很多,比较你用CAD的HATCH
从〇开始 14:02:28
抽稀很简单,道格拉斯普克算法,自己实现就行
[C# PY] OWEN 14:02:32
HATCH 的时候如果边界点太多,CAD有时候就直接死掉了
从〇开始 14:02:40
也没啥在深入讨论的放放风了
方法
[C# PY] OWEN 14:05:04
可以研究下
[vb.net]PPYYFF 14:07:14
你们都是资深程序员,很注重算法,我都是以实现目的为主,能完成任务就OK
[C# PY] OWEN 14:07:36
我本职是结构设计师,呵呵,只是偶尔写写程序
[VB.NET/VBA津]绒绒 14:07:39
同感
[C# PY] OWEN 14:07:44
主要还是用python做做数据处理
[VB.NET/VBA津]绒绒 14:07:59
达到目的就OK
从〇开始 14:08:14
抽稀算法你用什么思路,难度不是道格拉斯普克算法?
不会你根据两点距离来删除吧
[VB.NET/VBA津]绒绒 14:08:55
当然还有角度
从〇开始 14:09:06
简单说一下
交流一下
[VB.NET/VBA津]绒绒 14:10:16
没有编过,但是感觉很简单.
从〇开始 14:10:24
估计你想的方法是错误的
[VB.NET/VBA津]绒绒 14:10:58
正在工作呢,没有空想那么多
[VB.NET/VBA津]绒绒 14:11:56
你心思比较细腻!我达到目标就OK.
以后世世代代都要买政府的房子,世世代代都要租政府的土地种地
[C# PY] OWEN 14:14:30
平衡一下就好了
从〇开始 14:14:42
我猜想你的思路达不到抽稀的效果,不过你没说你的思路  具体也没法交流了
[VB.NET/VBA津]绒绒 14:16:19
建议先去百度一下啥道格拉斯普克算法,然后再编程吧,就按资深程序员的意思
从〇开始 14:16:48
我是资深程序员,cad开发不是我的主业
从〇开始 14:18:06
没说你的抽稀实现思路
[VB.NET/VBA津]绒绒 14:19:59
非要我说啊,悲剧啊!多段线一段段取出来,比较两段的夹角,夹角在多少度以内(自己定义),就删除掉后一段的顶点.
从〇开始 14:20:07
你如果根据相邻两点的距离和角度来判断是否删掉这个点应该是行不通的
[VB.NET/VBA津]绒绒 14:20:23
我考虑的仅仅是二维的
polyline,不是polyline3D
从〇开始 14:20:46
我知道
从〇开始 14:21:27
如果一条直线本来2个点  现在是1000个点,你这个思路最后是几个点?
[VB.NET/VBA津]绒绒 14:21:57
不太过失真就行
[VB.NET/VBA津]绒绒 14:22:34
像道路和等高线,我们的目标是不失真,且数据量最小
[C# PY] OWEN 14:22:56
工程师的思路就是差不多就行了
从〇开始 14:22:56
你这个算法肯定不是数据量最小的
[VB.NET/VBA津]绒绒 14:23:15
我也是搞工程的,O(∩_∩)O哈哈~,同感
从〇开始 14:23:32
就项上面我说的一条直线10000个点,你这个算法能抽到只有起点终点?
[C# PY] OWEN 14:23:42
搞太深就找程序员来做,多花的时间不一定能给画图带来多少帮助
 楼主| 发表于 2013-11-14 14:43:53 | 显示全部楼层
[VB.NET/VBA津]绒绒 14:43:53
我想了一下,如果一段圆弧形状,上面有10000个点,而且挨得够密,按照我的算法,的确是抽成了一根直线.还是你对了,资深程序员!
从〇开始 14:45:01
我不是资深程序员,不用这么称呼
[VB.NET/VBA津]绒绒 14:51:19
O(∩_∩)O哈哈~,本来就是,不用谦虚!
 楼主| 发表于 2013-11-14 19:07:05 | 显示全部楼层
C#——飘 19:07:05
Autodesk.AutoCAD.ApplicationServices.Application.BeginQuit += new EventHandler(Application_BeginQuit);
有没有类似以上的,autocad发生异常时的事件啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 09:00 , Processed in 0.206241 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表