明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3323|回复: 13

有请langjs兄弟及198526 兄弟及路过滴高手了再改自动编号标注代码

  [复制链接]
发表于 2012-4-26 18:51 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 flytoday 于 2012-4-26 19:05 编辑



想将原有程序增加个条件:
象上图中这种双条属等长平行线的(两条相差1mm也算等长行不)。。想有个设置,可以两边都标,也可以只标注一边
设置条件是:提示,平行线宽度(输入设置值),标注一边,其它平行线标注两边。
还有就是当出现重线时(因为有些会清除不干净),相重的多根线只要标长滴那根。。。




标注位置能不能调成这个样子的啊。。。就是双平行线。。。。

附上测试图:


附上langjs 兄弟的代码:

原贴位置:http://bbs.mjtd.com/thread-93257-1-1.html

麻烦各位了谢谢。。。。。。。。。。。。。。。。。。






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

最佳答案

查看完整内容

看看这个满意了没?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-4-26 18:51 | 显示全部楼层
本帖最后由 198526 于 2012-4-27 20:53 编辑
  1. (defun c:aA (/  b chra color db dm dmm ent file_id file_idx h h1 i j la ll n name pt pt0 pt0x pt0y pt1 pt1x pt1y pt2 pt2x pt2y pt3
  2.                ptslist r ss txt vtxlst x XDGC XDGC1 XDKD XDKD1)
  3.   (defun dimtext (pt1 pt2)
  4.     (setq pt1x (car pt1)  pt1y (cadr pt1)  pt2x (car pt2)  pt2y (cadr pt2)  pt0x (/ (+ pt1x pt2x) 2)
  5.           pt0y (/ (+ pt1y pt2y) 2)  pt0 (list pt0x pt0y) )
  6.     (setq txt (rtos (distance pt1 pt2))          r (angle pt1 pt2)  pt (polar pt0 (+ r (/ pi 2)) ll)  b (assoc color a)
  7.           db (list (caadr b) (cons (LIST txt (LIST PT0 PT1)) (cadadr b)))  dm (strcat (car db) (itoa (length (cadr db)))))
  8.     (IF
  9. (NOT(APPLY 'OR   
  10. (mapcar  '(lambda (N)
  11.     (AND (EQUAL (READ TXT) (READ(CAR N)) XDGC)(NOT(inters pt0 pt1 (CAADR N) (CADADR N) NIL))(<= (distance pt0 (CAADR N)) XDKD))
  12.             )
  13.          (CADADR B); (CADADR B)遍历表内比较(TXT (PT1 PT2))是否一样
  14.          )
  15.         )
  16.      )
  17. (PROGN   
  18.     (setq a (subst  (list color db)  b  a ) )
  19.     (maketext (strcat txt "(" dm ")") pt h r color la)
  20.    )
  21. )

  22.   )
  23.   (defun maketext (txt pt h r color la)
  24.     (entmake (list '(0 . "TEXT") (cons 8 la) (cons 62 color) (cons 10 pt) (cons 40 h) (cons 1 txt) (cons 50 r) '(41 . 0.8) '
  25.                    (72 . 1) (cons 11 pt) '(73 . 0) ) )
  26.   )
  27.   (setvar "cmdecho" 0)
  28.   (vl-load-com)
  29.   (if (setq h1 (getint "\n输入字高:<100>")) (setq h h1) (setq h 100) )
  30.   (if (setq XDGC1 (getREAL "\n输入等长公差值:<1.>")) (setq XDGC XDGC1) (setq XDGC 1.) )
  31.   (if (setq XDKD1 (getREAL "\n输入等长跨度值:<200.>")) (setq XDKD XDKD1) (setq XDKD 200.) )
  32.   
  33.   
  34.   (setq ll (/ h 2) chra 65 a '())
  35.   (setq ss (ssget '((0 . "LINE,LWPOLYLINE,POLYLINE"))))
  36.   (repeat (setq i (sslength ss))
  37.     (setq name (ssname ss (setq i (1- i)))  ent (entget name)  la (cdr (assoc 8 ent)))
  38.    
  39.     (if (not (assoc 62 ent))
  40.       (setq color (cdr (assoc 62 (tblsearch "LAYER" (cdr (assoc 8 ent)))))) ;获得随层的颜色
  41.       (setq color (cdr (assoc 62 ent)))
  42.     )
  43.     (if (not (assoc color a)) (setq a (cons (list color (list (chr (+ chra (length a))) nil)) a)) )
  44.     (if (= "LINE" (cdr (assoc 0 ent)))
  45.       (progn(setq pt1 (cdr (assoc 10 ent)) pt2 (cdr (assoc 11 ent)))(dimtext pt1 pt2))
  46.       (progn
  47.         (if (= "LWPOLYLINE" (cdr (assoc 0 ent))) (setq n 2) (setq n 3))
  48.         (setq vtxlst (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object name) 'coordinates))))
  49.         (setq j 0   ptslist nil        )
  50.         (repeat (/ (length vtxlst) n)
  51.           (setq ptslist (append          ptslist
  52.                           (list (list (nth j vtxlst) (nth (1+ j) vtxlst) (if (= n 3) (nth (+ 2 j) vtxlst)  0.0 )) )
  53.                         ))
  54.           (setq j (+ j n))
  55.         )
  56.         (setq pt1 nil  pt2 nil)
  57.         (foreach x ptslist            ;遍历相邻两个点坐标
  58.           (if (null pt1)(setq pt1 x pt3 x ) (setq pt2 x))
  59.           (if pt2 (progn (dimtext pt1 pt2) (setq pt1 pt2)))
  60.         )
  61.         (if (= 1 (cdr (assoc 70 ent)))(dimtext pt2 pt3))
  62.       )
  63.     )
  64.   )
  65.   (setq file_idx (getfiled "指定输出文件路径" "" "xls" 1)
  66.         file_id (open file_idx "w")
  67.   )
  68.   (write-line "颜色号码\t对应代码\t长度" file_id)
  69.   (foreach b (reverse a)
  70.     (setq dmm (strcat (itoa (car b)) "\t" (caadr b)) n 0 )
  71.     (foreach x (reverse (cadadr b))
  72.       (write-line (strcat dmm (itoa (setq n (1+ n))) "\t" (CAR x)) file_id)
  73.     )
  74.   )                                      
  75.   (close file_id)
  76.   (princ)
  77. )
看看这个满意了没?

点评

好强大 ,学习了  发表于 2015-7-30 09:48

评分

参与人数 2明经币 +2 收起 理由
langjs + 1 导入EXCEL数据没啥用了,没有数量
flytoday + 1 很给力!超满意哈哈谢谢啦。

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-4-26 19:12 | 显示全部楼层
相信这个修改完美后的源码做为明经出书的源码是非常适用滴
这个可用于建筑造价工程预结算使用:
1、用于建筑水电工程管道长度标注计算(特别适用于要求要有计算式的要求)
2、适用于建筑工程预结算核对梁长,内墙装饰长度等。。。。
希望。。。哪位高手帮帮忙,。,也算为明经出书做贡献
谢谢啦。///
回复

使用道具 举报

发表于 2012-4-26 21:13 | 显示全部楼层
本帖最后由 langjs 于 2012-4-26 21:20 编辑

受不了你了,
你又来了?
怕了你了!

198526 兄弟对表研究的很透,多复杂的表都能搞定,恭喜你找对人了,我闪……

点评

兄弟借用你下智慧滴才智..麻烦了..谢谢  发表于 2012-4-26 21:27
回复

使用道具 举报

 楼主| 发表于 2012-4-26 21:19 | 显示全部楼层

哈哈谢谢你
回复

使用道具 举报

 楼主| 发表于 2012-4-26 21:21 | 显示全部楼层
求滴代码都是完美滴哈..都能入明经出书源码哈
回复

使用道具 举报

发表于 2012-4-27 06:37 | 显示全部楼层

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2012-4-27 07:10 来自手机 | 显示全部楼层
本帖最后由 flytoday 于 2012-4-27 07:20 编辑

哇院长好早……院长啥时候提供一两个真源啊……院长这种做到选择时只选到平行线中一条很强大…不知道是不是…能做到设置平行线距离大小,来判断要选中一条还是两条

点评

上面的控制距离是220  发表于 2012-4-27 07:28
回复

使用道具 举报

 楼主| 发表于 2012-4-27 09:02 | 显示全部楼层
xyp1964 发表于 2012-4-27 06:37

院长你这个不同的线咋编号是相同的啊

点评

依据长度编号  发表于 2012-4-27 09:13
回复

使用道具 举报

 楼主| 发表于 2012-4-27 09:18 | 显示全部楼层
本帖最后由 flytoday 于 2012-4-27 09:38 编辑
flytoday 发表于 2012-4-27 09:02
院长你这个不同的线咋编号是相同的啊


哦这个不是我想要的。。。我想依据线进行编号。只是说等长的平行线只要标注一根而已。。

还有我不想要穿内裤滴码呵呵。。我想改源码哈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 19:07 , Processed in 0.340719 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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