找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3329|回复: 67

[原创] 组码比较

  [复制链接]

已领礼包: 604个

财富等级: 财运亨通

发表于 2017-6-10 20:14:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 /db_自贡黄明儒_ 于 2017-6-14 14:14 编辑

原来我本论坛写了一个“组码比较”,自己使用起来也不满意。于是我反复思哟想哟,感到

才情不够;反复写哟改哟,时常捉襟见肘。我食不甘味、辗转反侧、废寝忘食、挑灯夜战、壮志凌云、壮心不已,

终于上苍怜我,才有了下面的模样。这个界面自我觉得友好,对于初如编程也许有用。对我

自己而言,也记不住组码的意义,用此程序来查查。特别对于单行文字,先击它,改变定位

点再击它,可以看到组码的变化。
对于组码的解释,我也觉得不太完善,希望有高手改进一下。

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;组码比较 自贡黄明儒 2017.6.10
  2. ;;列表框增加内容
  3. ;;(DCL-ADDLIST "ltypelist1" Ltypes "0"),用在new_dialog之后
  4. ;;(defun dcl-AddListAddList (key val item);列表框加载
  5. (defun C:SameEnt (/ DCLID E EN FLAG FN FNAME LST LST1 LST2 RETURN# STR VAL)
  6.   (defun dialog        ()
  7.     (setq fname (vl-filename-mktemp nil nil ".dcl"))
  8.     (setq fn (open fname "w"))
  9.     (write-line
  10.       "//dcl_settings :default_dcl_settings{audit_level = 0;}"
  11.       fn
  12.     )
  13.     (write-line "SameEnt : dialog{label=\"组码比较\";" fn)
  14.     (write-line "  :row{" fn)
  15.     (write-line "    :column{label=\"先\";" fn)
  16.     (write-line
  17.       "      :button{label=\"<<Pick&1\";key=\"Pick1\";}      "
  18.       fn
  19.     )
  20.     (write-line
  21.       "      :list_box{key=\"l1\";width=27;height=24;multiple_select=true;}"
  22.       fn
  23.     )
  24.     (write-line "    }" fn)
  25.     (write-line "    :column{label=\"后\";" fn)
  26.     (write-line
  27.       "      :button{label=\"<<Pick&2\";key=\"Pick2\";}      "
  28.       fn
  29.     )
  30.     (write-line
  31.       "      :list_box{key=\"l2\";width=27;height=24;multiple_select=true;}"
  32.       fn
  33.     )
  34.     (write-line "    }" fn)
  35.     (write-line "    :column{" fn)
  36.     (write-line
  37.       "      :list_box{label=\"(先 后)差异表\";key=\"l3\";width=27;height=18;}"
  38.       fn
  39.     )
  40.     (write-line
  41.       "      :text{key=\"l4\";width=27;height=6;value=\"比较同一对象,要运行二次

  42. \";}"
  43.       fn
  44.     )
  45.     (write-line "    }" fn)
  46.     (write-line "  }" fn)
  47.     (write-line " ok_only;" fn)
  48.     (write-line "}" fn)
  49.     (close fn)
  50.   )

  51.   (defun doPick1 ()
  52.     (if        (setq e (car (nentsel "\n 点取图元")))
  53.       (progn
  54.         (setq en (entget e))
  55.         (setq *compareEn1* (mapcar 'VL-PRIN1-TO-STRING en))        
  56.       )
  57.     )
  58.   )

  59.   (defun doPick2 ()
  60.     (if        (setq e (car (nentsel "\n 点取图元")))
  61.       (progn
  62.         (setq en (entget e))
  63.         (setq *compareEn2* (mapcar 'VL-PRIN1-TO-STRING en))        
  64.       )
  65.     )
  66.   )
  67.   
  68.   (defun setdata ()
  69.     (dcl-AddListAddList "l1" *compareEn1* nil)
  70.     (dcl-AddListAddList "l2" *compareEn2* nil)
  71.     (SameEnt)
  72.     (dcl-AddListAddList "l3" Lst "0")
  73.     (if val (set_tile "l4" val))
  74.   )

  75.   (defun SameEnt ()
  76.     (setq Lst1 nil)
  77.     (setq Lst2 nil)
  78.     (if        (and *compareEn1* *compareEn2*)
  79.       (progn
  80.         (foreach x *compareEn1*
  81.           (if (not (member x *compareEn2*))
  82.             (setq Lst1 (cons x Lst1))
  83.           )
  84.         )
  85.         
  86.         (setq Lst1 (cons "先" (reverse Lst1)))
  87.         (foreach x *compareEn2*
  88.           (if (not (member x *compareEn1*))
  89.             (setq Lst2 (cons x Lst2))
  90.           )
  91.         )
  92.         
  93.         (setq Lst2 (cons "后" (reverse Lst2)))
  94.         
  95.         (setq Lst (append Lst1 Lst2))        
  96.       )
  97.     )
  98.   )
  99.   
  100.   (defun dol3 ()
  101.     (SameEnt)
  102.     (setq FLAG nil)
  103.     (setq str nil)
  104.     ;;下句-1组码时,用read出错
  105.     (setq FLAG (nth (read val) Lst))
  106.     (if        (or (= FLAG "先") (= FLAG "后"))
  107.       (setq str "比较同一对象,要运行二次")
  108.       (if (vl-catch-all-error-p
  109.             (setq FLAG (vl-catch-all-apply 'read (list FLAG)))
  110.           )
  111.         (setq str "图元软指针")
  112.         (progn
  113.           (setq Flag (car FLAG))
  114.           (setq        str
  115.                  (cond
  116.                    ((= FLAG -1) "图元名")
  117.                    ((= FLAG 0) "图元类型")
  118.                    ((= FLAG 1) "默认值\n输入的标注文字")
  119.                    ((= FLAG 2) "名称")
  120.                    ((= FLAG 3)
  121.                     "附加文字(始终在长度为\n 250 个字符的数据块中)\n标注样式名"
  122.                    )
  123.                    ((= FLAG 5) "图元句柄")
  124.                    ((= FLAG 6) "线型名")
  125.                    ((= FLAG 7) "文字样式名")
  126.                    ((= FLAG 8) "图层名")
  127.                    ((= FLAG 10) "第一对齐点(OCS中)\n起点\n插入点\中心点")
  128.                    ((= FLAG 11)
  129.                     "第二对齐点(OCS中)\n只有当72或73组的值\n非零时,该值才有意义

  130. \n标注文字的中点"
  131.                    )
  132.                    ((= FLAG 12) "标注克隆的插入点\n基线和连续(OCS中)")
  133.                    ((= FLAG 13)
  134.                     "线性标注和角度标注的定义点\n指定的第一个延长线的起点"
  135.                    )
  136.                    ((= FLAG 14)
  137.                     "线性标注和角度标注的定义点\n指定的第二个延长线的起点"
  138.                    )
  139.                    ((= FLAG 15) "直径标注、半径标注和角度标注的定义点")
  140.                    ((= FLAG 16) "定义角度标注的标注圆弧的点")
  141.                    ((= FLAG 39) "厚度(选项; 缺省 = 0)")
  142.                    ((= FLAG 40) "文字高度\n半径标注和直径标注的引线长度\n半径")
  143.                    ((= FLAG 41) "宽度因子")
  144.                    ((= FLAG 42) "水平宽度\n等于或小于组码41的值")
  145.                    ((= FLAG 43) "多行文字垂直高度")
  146.                    ((= FLAG 48) "线型比例(选项)")
  147.                    ((= FLAG 50) "弧度")
  148.                    ((= FLAG 51) "倾斜角")
  149.                    ((= FLAG 52) "旋转角度(组码 50)时,\n将给出尺寸界线的角度")
  150.                    ((= FLAG 53) "标注文字与其默认方\n向所成的旋转角度")
  151.                    ((= FLAG 60) "0可性\n1不可见")
  152.                    ((= FLAG 62)
  153.                     "颜色号 0 = 随块.256 = 随层\n负值表示层关闭. 禁止(选项)"
  154.                    )
  155.                    ((= FLAG 67) "0模型空间/1图纸空间")
  156.                    ((= FLAG 70) "标注类型")
  157.                    ((= FLAG 71)
  158.                     "1\n左上2\n中上3\n右上4\n左中5\n正中6\n右中7\n左下8\n中下9\n

  159. 右下\n2文字反向(在X轴方向镜像)\n4文字倒置(在Y轴方向镜像)"
  160.                    )
  161.                    ((= FLAG 72)
  162.                     "0\n左对正1\n居中对正2\n右对正3\n对齐(如果垂直对齐 = 0)4\n中

  163. 间(如果垂直对齐 = 0)5\n拟合(如果垂直对齐 = 0)"
  164.                    )
  165.                    ((= FLAG 73)
  166.                     "垂直0\n基线对正1\n底端对正2\n居中对正3\n顶端对正"
  167.                    )
  168.                    ((= FLAG 100) "子类数据标记")
  169.                    ((= FLAG 102) "供应用程序使用的控制字符串")
  170.                    ((= FLAG 210) "拉伸方向\n(选项; 缺省 = 0, 0, 1)\n 3D矢量")
  171.                    (T "比较同一对象,要运行二次")
  172.                  )
  173.           )
  174.         )
  175.       )
  176.     )
  177.     (set_tile "l4" str)
  178.   )

  179.   (dialog)

  180.   (setq dclid (load_dialog fname))
  181.   (setq return# 3)
  182.   (while (> return# 1)
  183.     ;;根据需要自处理开始,DCLName必须填写
  184.     (new_dialog "SameEnt" dclid)
  185.     (setdata)
  186.     (action_tile "accept" "(done_dialog 1)")
  187.     (action_tile "Pick1" "(done_dialog 2)")
  188.     (action_tile "Pick2" "(done_dialog 3)")
  189.     (action_tile "l3" "(setq val $value)(dol3)")
  190.     (setq return# (start_dialog))
  191.     (cond
  192.       ((= return# 1))
  193.       ((= return# 2) (doPick1))
  194.       ((= return# 3) (doPick2))     
  195.     )
  196.   )
  197.   (unload_dialog dclid)
  198.   (vl-file-delete fname)

  199.   (princ "\n")
  200.   (princ Lst)  
  201.   (princ)
  202. )
  203. (princ "\n 组码比较命令SameEnt")
  204. (princ)
  205. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;组码比较 自贡黄明儒 2017.6.10
游客,如果您要查看本帖隐藏内容请回复

QQ截图20170610200742.png
1.gif

HHB组码比较.rar

8.33 KB, 下载次数: 70, 下载积分: D豆 -1 , 活跃度 1

VLX

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 8611个

财富等级: 富甲天下

发表于 2017-6-10 20:57:26 | 显示全部楼层
序言里中间几句诗写的不错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3730个

财富等级: 富可敌国

发表于 2017-6-10 21:05:02 | 显示全部楼层
回复学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1983个

财富等级: 堆金积玉

发表于 2017-6-10 21:05:42 | 显示全部楼层
我来测试一下,行不行”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-6-10 22:06:26 | 显示全部楼层
支持黄大侠
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-6-10 22:09:39 | 显示全部楼层
执行起来有错误呢?



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2017-6-10 22:11:37 | 显示全部楼层
回复学习学习!

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2017-6-10 22:20:11 | 显示全部楼层
支持支持,有个类似的组码浏览

祖玛浏览

祖玛浏览

点评

如果只是浏览,意义就不大了。  发表于 2017-6-10 22:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

 楼主| 发表于 2017-6-10 22:22:52 | 显示全部楼层

我2016下执行通过,您水平那么高,发现问题了就帮完善一下吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2017-6-10 22:36:00 | 显示全部楼层

确实是这样,并没有什么意义,虽然可以不停地浏览关联对象,但DCL对话框有不能超过8个的限制。
222.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

发表于 2017-6-10 22:42:13 来自手机 | 显示全部楼层
支持黄老师
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

发表于 2017-6-10 22:50:47 | 显示全部楼层
回复学习学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6202个

财富等级: 富甲天下

发表于 2017-6-10 23:34:05 | 显示全部楼层
这种工具还是很有用的,谢谢大师分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2017-6-11 00:05:46 | 显示全部楼层
牛。                    
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

发表于 2017-6-11 00:08:49 | 显示全部楼层
回复学习学习。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-26 00:33 , Processed in 0.210216 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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