你有种再说一遍 发表于 2025-3-6 00:33:48

cad.net 合并图层

本帖最后由 你有种再说一遍 于 2025-3-8 22:42 编辑

好耐之前唔系几识用字典,
然后写咗一段两千行嘅合并图层.
点解咁多?因为当时净系识得循环.

依家`疯狂青蛙`问起点做,同时佢嘅代码亦系千年屎山,
一番讲解之下,佢似乎唔系几知我表达紧咩.
于是乎我就自己唷手,发现关键代码行数真系好少,
尤其系之前都冇注意过成环等等问题,
依家就好似拼积木咁,一忽一忽加入去.

我觉得大家都写得出只是都写得麻麻地.
最惊就系大家学识Linq之后就只识得where过滤,
点解唔做个例子比大家捏?就有本篇了.

系了,tr.GetObject(id, openLockedLayer:true)
可以打开锁定图层的图元,但是此时必须要写模式,
唔可以: 一读-二判-三提权-四修改,
所以我将事务栈
openLockedLayer==true时,直接改为写模式了,
避免其他人唔知原理.

唔洗好似Lisp咁需要解锁-修改图元-恢复锁定.
不过,遇到发送命令就冇咩符fit了.
又不过,我地从来唔洗发送命令,咩都可以自己做.
(你做唔到系因为你屎,又唔系我做唔到)

https://www.cnblogs.com/JJBox/p/15995259.html

你可以留意到我嘅代码,
将几个字典好似两杯水咁倒来倒去,
因为哩个手法系在编译器原理上面学识嘅,
有时候多一层跳板好似做咩都容易咗,
唔洗直接去霖A点到Z点,而是多小小BCDE点就得了.

除咗合并图层,
仲有文字样式,标注样式,多重标注样式,
自己执生.

当你冇咩思维同设计嘅时候,学识数1,2,3,
然后不断切分步骤,如果仲唔识,就再切,一路切,
直到终于识得做了,就将最简单嘅一步做好先,
然后再往外继续做.
哩个就系火箭要点整嘅步骤.

青蛙寻日删咗7K代码.原来佢写咗一堆扩展代码,
佢觉得扩展函数好鬼简单:
tr.GetObject()
tr.GetObject<T>()
tr.GetObjectForWrite<T>()..

佢对于编程的理解走向咗一条怪异道路,
我首先用"精简指令"哩个名词去打动佢,
指令要少,参数再多都好,
记忆指令就系记函数名,一堆函数就是"动作".
精简指令之后,代码就表示为"套路",
就好似画图都知道要"套图",
写代码梗系亦有套路啦,然后叫佢开始删代码了.

删代码就系对过去的告别,
学识删垃圾代码,可以简化自己对流程嘅理解.

其次佢冇学识封装本质系唔写重复代码之余,
仲要唔改引用部分,咩野都可以先通过中间层去处理,
重新编排流程先至系编程重点.

我举两个例子比大家.
1, GetObject()打开锁定对象必须要写模式,
咁我只需要去改事务栈就好了.

2,事务栈嘅Document改为寻址模式,
但是Acad14稳唔到嘅时候会报错(后台开图),而Acad24就唔会.
咁我就首先尝试在事务栈try一下,结果系得嘅.
如果裸写,咁就扑街了,要每个命令入面去改可能嘅引用.
关键系仲冇IDE提示嘅...

补充:
终于将字典递归写好了...
先修改引用再递归.
进入递归之后,hashset记录过就会直接结束,防止菱形引用.
如果我净系学Lisp嘅话我肯定唔知点处理好.

哩个例子改咗一下,依家更直观了.
之前点解连例子都写唔好...
https://www.cnblogs.com/JJBox/p/15995259.html#_lab2_2_2

走人,
xx

Wanda 发表于 2025-3-6 08:07:22

哇~活抓一只惊佬哦

蓝天cayuer 发表于 2025-3-6 13:56:41

怎么用的 大神?
怎么输入命令行里一直在提示另存为?

你有种再说一遍 发表于 2025-3-6 15:59:58

蓝天cayuer 发表于 2025-3-6 13:56
怎么用的 大神?
怎么输入命令行里一直在提示另存为?

要编译的,要学习C#的,要安装VS的...

lxw320 发表于 2025-3-6 23:17:13

学习了你的“cad.net 读写PC3,PMP打印机文件”文章,下载了文件后引用,并引用你的示例,提示这个?我是不是少引用了什么?

你有种再说一遍 发表于 2025-3-7 00:30:33

lxw320 发表于 2025-3-6 23:17
学习了你的“cad.net 读写PC3,PMP打印机文件”文章,下载了文件后引用,并引用你的示例,提示这个?我是不 ...

我博客也没有.Write()啊,你做错了什么?

liuhe 发表于 2025-4-9 21:42:53

mergeNameMap = CalculateFinalTargets(mergeNameMap);


这个CalculateFinalTargets是啥?

你有种再说一遍 发表于 2025-4-10 00:29:04

liuhe 发表于 2025-4-9 21:42
mergeNameMap = CalculateFinalTargets(mergeNameMap);




你打开网页,然后用ctrl+f搜索,一共有三个地方使用,
其中一个就是定义了.

liuhe 发表于 2025-4-10 08:42:43

你有种再说一遍 发表于 2025-4-10 00:29
你打开网页,然后用ctrl+f搜索,一共有三个地方使用,
其中一个就是定义了.

找到了,是我看的不仔细。谢谢惊惊老师
页: [1]
查看完整版本: cad.net 合并图层