明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6554|回复: 23

[讨论] 序号生成------------苦闷中

  [复制链接]
发表于 2014-2-27 16:00:34 | 显示全部楼层 |阅读模式
今天X版对我说,好几天没发贴了,确实,因为一直在苦闷中。
对于序号是图中简单繁琐的一件事情,我想应该有如下三个功能
1 生成
2 排序(http://bbs.mjtd.com/thread-108678-1-1.html
3 修改
对于后两者,好象好解决
对于前者,谁有比较完善的程序?

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
linshiyin2 + 1 怎么区别你编写的序号,在dxf中加入特殊的标.

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-2-27 18:09:36 | 显示全部楼层
这个自己写写,这么多项,工作量比较大
发表于 2014-2-27 22:13:32 | 显示全部楼层
生成序号的同时可以生成明细栏就好了
发表于 2014-2-28 08:24:08 | 显示全部楼层
可惜我还没学对话框啊
发表于 2014-2-28 09:24:07 | 显示全部楼层
本帖最后由 linshiyin2 于 2014-2-28 09:25 编辑

如何区分编写的序号,在dxf中加入特殊的标记?或者使用块,序号就是块属性?我现在使用的是字体颜色进行区分,一个比较少用的颜色区分哪些是自己的编号,至于编号的增减、排序,最好是删除某一个自动的调整其他的编号,增加某一个其他的也自动调整序号,这样比较自动并且不容易出错。我想块属性可能解决起来最方便。目前我将就着使用“序号铲子”删除一个序号其他比它大的自动减少一个。
发表于 2014-2-28 09:44:56 | 显示全部楼层
另外我有一部分序号生成的程序,别人的,基本还行,
  1. (defun ljxh (/ DIA DX DXX DY K KEEP LAB_NO N OS_OLD TE WHAT)
  2.   (msave '("cmdecho" "blipmode" "aunits" "clayer" "cecolor" "PLINEWID" "CELTYPE" "osmode"))
  3.   (setvar "cmdecho" 0)
  4.   (setq        n 0
  5.         what 3
  6.         lab_no 1
  7.   )
  8. ;;;  (setq ucs_name "ljh")
  9. ;;;  (command "ucs" "del" ucs_name)
  10. ;;;  (command "ucs" "save" ucs_name)
  11.   (command "ucs" "w")
  12.   (setvar "measurement" 1)
  13.   (setq os_old (getvar "osmode"))
  14.   (setvar "osmode" 0)
  15.   (command "layer" "s" "0" "c" "white" "" "")
  16.   (command "layer" "m" "draw" "c" "white" "" "")
  17.   (command "layer" "m" "center"        "c" "red" "" "l" "center" "" "")
  18.   (command "layer" "m" "dashed"        "c" "white" "" "l" "dashed" "" "")
  19.   (command "layer" "m" "bhatch" "c" "blue" "" "")
  20.   (command "layer" "m" "dim" "c" "white" "" "")
  21.   (command "layer" "m" "data" "lo" "data" "")
  22.   (command "layer" "s" "0" "")


  23.   (defun do_help()
  24.     (help "cadhelp.hlp" "ljxh")
  25.     )
  26.   
  27.   (defun label_draw (/ ty pp pp1 pt an num m mm ss)
  28.     (setq an 0)
  29.     (setq ty lab_no)
  30.     (while (/= ty 0)
  31.       (setq dx 20
  32.             dy 10
  33.             dxx        5
  34.             m  (get_m)
  35.       )
  36.       (prompt "\n请选择标注零件")
  37.       (princ)
  38.       (setq pp (getpoint))
  39.       (prompt "\n请选择标注位置")
  40.       (princ)
  41.       (setq pp1 (getpoint pp))
  42.       (setq pt pp1)
  43.       (command "layer" "s" "标注" "")
  44.       (command "line" pp pp1 "")
  45.       (if (> (car pp) (car pp1))
  46.         (setq an pi)
  47.         (setq an 0.0)
  48.       )
  49.       (setq pp (cdr (assoc 11 (entget (entlast)))))
  50.       (setq k 0)
  51.       (setq num lab_no)
  52.       (if (>= lab_no 4) (setq num (- lab_no 2)))
  53.       (repeat num
  54.         (setq k (1+ k))
  55.         (setq ss (ssadd));;将 ss 设为空选择集
  56.         (if (/= k 1)
  57.           (progn
  58.           (if (>= lab_no 4)
  59.             (command "line" pp (setq pp (polar pp (/ pi 2.0) dy)) "")
  60.             (progn
  61.               (setq pp (polar pp an dx))
  62.               (setq pp1 (polar pp an dxx))
  63.               (command "pline"
  64.                        pp
  65.                        "w"
  66.                        0
  67.                        ""
  68.                        (polar (polar pp an (/ dxx 2)) (/ pi -2) 1)
  69.                        pp1
  70.                        ""
  71.               )
  72.               (setq pp pp1)
  73.             )
  74.           )
  75.           (ssadd (entlast) ss);;添加这个图元到选择集
  76.           )
  77.         )
  78.         (command "pline" pp "w" 0.3 "" (polar pp an dx) "")
  79.         (ssadd (entlast) ss);;添加这个图元到选择集
  80.         (COMMAND "style" "ljxh_st" "Times New Roman" 4.0 0.8 10 "" "")
  81.         (setq te (getstring "\n输入零件序号:"))
  82.         (command "text")
  83.         (if (= an 0)
  84.           (command (polar pp (/ pi 6.0) 4.0) ""  te)
  85.           (command (polar (polar pp an dx) (/ pi 6.0) 4.0) "" te)
  86.         )
  87.         (ssadd (entlast) ss);;添加这个图元到选择集
  88.         (COMMAND "scale" ss "" pt (rtos m 2 6));;缩放
  89.       )
  90.       (setq keep (getstring "\n按X键退出当前标注\\其他任意键继续标注:"))
  91.       (if (or (= keep "x") (= keep "X"))
  92.         (setq ty 0)
  93.       )
  94.     )
  95.   (if (not (new_dialog "bom_label" dia))
  96.     (exit)
  97.   )
  98.   )
  99.   (defun vslide        (key s_name n / x y)
  100.     (setq x (dimx_tile key))                    
  101.     (setq y (dimy_tile key))
  102.     (start_image key)
  103.     (fill_image n -5 x y 2)
  104.     (slide_image n -5 x y (strcat "lable(" s_name ")"))
  105.     (end_image)
  106.   )
  107.   (setq dia (load_dialog "ljxh.dcl"))
  108.   (if (not (new_dialog "bom_label" dia))
  109.     (exit)
  110.   )
  111.   (while (> what 0)
  112.     (vslide "k_lable1" "lable1" 0)
  113.     (vslide "k_lable2" "lable2" 0)
  114.     (vslide "k_lable3" "lable3" 0)
  115.     (vslide "k_lable4" "lable4" 0)
  116.     (vslide "k_lable5" "lable5" 0)
  117.     (vslide "k_lable6" "lable6" 0)
  118.     (action_tile "k_lable1" "(setq lab_no 1)")
  119.     (action_tile "k_lable2" "(setq lab_no 2)")
  120.     (action_tile "k_lable3" "(setq lab_no 3)")
  121.     (action_tile "k_lable4" "(setq lab_no 4)")
  122.     (action_tile "k_lable5" "(setq lab_no 5)")
  123.     (action_tile "help" "(do_help)")
  124.     (action_tile "accept" "(done_dialog 2)")
  125.     (setq what (start_dialog))
  126.     (if        (= what 2)
  127.       (label_draw)
  128.     )
  129.   )
  130.   (unload_dialog dia)
  131.   (mrsave)
  132. ;;;  (command "layer" "s" "draw" "")
  133. ;;;  (command "ucs" "r" ucs_name)
  134. ;;;  (command "ucs" "del" ucs_name)
  135.   (setvar "cmdecho" 1)
  136.   (setvar "osmode" os_old)
  137. )
 楼主| 发表于 2014-2-28 10:02:52 | 显示全部楼层
linshiyin2 发表于 2014-2-28 09:24
如何区分编写的序号,在dxf中加入特殊的标记?或者使用块,序号就是块属性?我现在使用的是字体颜色进行区分 ...

使用带属性的块也行呀。即使带反应,删除一个,其它减少这好办,但增加呢?我觉得反应器麻烦且易出错,还是用text好些。目前我都是用的leader
发表于 2014-2-28 11:28:16 | 显示全部楼层
自贡黄明儒 发表于 2014-2-28 10:02
使用带属性的块也行呀。即使带反应,删除一个,其它减少这好办,但增加呢?我觉得反应器麻烦且易出错,还 ...

减少好做了增加也就好做了,增加的时候选择到所有的标记的编号,根据序号大小大于的增加1个即可,关键是我现在没有做成集成了,都是一个一个的散乱程序。
发表于 2014-2-28 11:45:19 | 显示全部楼层
;; 自动序号

本帖子中包含更多资源

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

x

点评

你这个不错,但圆太大  发表于 2014-2-28 11:47
 楼主| 发表于 2014-2-28 11:51:34 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2014-2-28 11:56 编辑
xyp1964 发表于 2014-2-28 11:45
;; 自动序号


刚才我做了一个界面,觉得比你的界面要友好些
其实应该只有两类,根据鼠标动判断垂直或者水平
  1. HHXHSC : dialog {label = "自贡运机集团 序号(黄明儒HHXH)";
  2.         : boxed_column {           
  3.           : edit_box {label = "前    缀(&Q)"; key = "HHqz"; mnemonic = "Q";edit_width=9;}
  4.           : edit_box {label = "起始编号(&B)"; key = "HHbh"; mnemonic = "B"; edit_width=9;value="01";}
  5.           : edit_box {label = "后    缀(&H)"; key = "HHhz"; mnemonic = "H";edit_width=9;}
  6.         }
  7.         : row{
  8.           : button {label = "取----消(&C)";key = "but_Cancel";is_cancel=true;}
  9.           : button {label = "球形序号(&E)";mnemonic = "E";key = "but_o";}
  10.           : button {label = "常规序号(&O)";key = "but_OK";is_default=true;}
  11.        }
  12.     }

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-5-25 10:38 , Processed in 0.191928 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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