- 积分
- 12982
- 明经币
- 个
- 注册时间
- 2015-8-18
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 你有种再说一遍 于 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 |
|