明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: zzc83

全部币求助:中心线按不同梁宽改为不同颜色,同一梁宽颜色相同。

  [复制链接]
发表于 2012-12-11 17:12:53 | 显示全部楼层
这个看合适不

  1. (defun x_ssn (ss / n lst)
  2.   (repeat (setq N (sslength ss))
  3.     (setq LST (cons (ssname SS (setq N (1- N))) LST))
  4.   )
  5. )
  6. (defun t_mak (l_n t_10 t_11 t_t t_50 t_72 t_73 t_h t_w t_st /)
  7.   (entmake (list '(0 . "text")
  8.      '(100 . "AcDbEntity")
  9.      (cons 8 l_n)
  10.      '(100 . "AcDbText")
  11.      (cons 10 t_10)
  12.      (cons 1 t_t)
  13.      (cons 40 t_h)
  14.      (cons 41 t_w)
  15.      (cons 7 t_st)
  16.      (cons 72 t_72)
  17.      (cons 11 t_11)
  18.      (cons 50 t_50)
  19.      (cons 73 t_73)
  20.      ) ;_ 结束list
  21.   ) ;_ 结束entmake
  22. ) ;_ 结束defun
  23. (defun ch_dxf (en num ch / old_num new_num ent)
  24.   (if (setq ent      (entget en)
  25.       new_num (cons num ch)
  26.       old_num (assoc num ent)
  27.       )
  28.     (entmod (subst new_num old_num ent))
  29.     (entmod (reverse (cons new_num (reverse ent))))
  30.   )
  31. )
  32. (defun beam_w (en lay / ent pt1 pt2 mid_pt ang n ss dist)
  33. ;;;  (setq en (car(entsel)) lay "11-Y")
  34.   (setq ent (entget en))
  35.   (setq  pt1 (cdr (assoc 10 ent))
  36.   pt2 (cdr (assoc 11 ent))
  37.   )
  38.   (setq mid_pt (mapcar '(lambda (x y) (/ (+ x y) 2)) pt1 pt2))
  39.   (setq ang (angle pt1 pt2))
  40.   (setq n 0)
  41.   (while
  42.     (= nil
  43.        (setq ss
  44.         (ssget "f"
  45.          (list (polar mid_pt (+ ang (/ pi 2)) (+ 76 (* n 25)))
  46.          (polar mid_pt (+ ang (/ pi -2)) (+ 76 (* n 25)))
  47.          )
  48.          (list '(0 . "line") (cons 8 lay))
  49.         )
  50.        )
  51.     )
  52.      (setq n (1+ n))
  53.   )
  54.   (setq  dist (*  2
  55.     (distance mid_pt
  56.         (vlax-curve-getClosestPointTo
  57.           (vlax-ename->vla-object (ssname ss 0))
  58.           mid_pt
  59.         )
  60.     )
  61.        )
  62.   )
  63.   (t_mak "0"
  64.    '(0 0 0)
  65.    mid_pt
  66.    (strcat "梁宽" (rtos dist))
  67.    ang
  68.    1
  69.    0
  70.    250
  71.    0.75
  72.    "standard"
  73.   )
  74.   dist
  75. )
  76. (defun m_dela (m_list / x m_list1)
  77.   (setq m_list1 nil)
  78.   (mapcar '(lambda (x)
  79.        (if (not (member x m_list1))
  80.          (setq m_list1 (cons x m_list1))
  81.        )
  82.      )
  83.     m_list
  84.   )
  85.   (setq m_list (reverse m_list1))
  86. )
  87. (defun c:test1 (/ ss1 ss2 lst1 lst2 n)
  88.   (setq ss1 (ssget '((0 . "line") (8 . "5"))))
  89.   (setq ss2 (ssget "X" '((0 . "line") (8 . "11-Y"))))
  90.   (mapcar '(lambda (x) (ch_dxf x 6 "continuous")) (x_ssn ss2))
  91.   (setq  lst1 (mapcar '(lambda (x) (list (rtos (beam_w x "11-Y")) x))
  92.          (x_ssn ss1)
  93.        )
  94.   )
  95.   (setq
  96.     lst2 (m_dela
  97.      (mapcar '(lambda (x) (rtos (beam_w x "11-Y"))) (x_ssn ss1))
  98.    )
  99.   )
  100.   (setq n 0)
  101.   (while (< n (length lst2))
  102.     (mapcar '(lambda (x)
  103.          (if (member (nth n lst2) x)
  104.      (vla-put-color (vlax-ename->vla-object (cadr x)) (1+ n))
  105.      t
  106.          )
  107.        )
  108.       lst1
  109.     )
  110.     (setq n (1+ n))
  111.   )
  112.   (mapcar '(lambda (x) (ch_dxf x 6 "DASH")) (x_ssn ss2))
  113.   (princ)
  114. )


本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +2 收起 理由
zzc83 + 1
flytoday + 1 大师能不能在图中指下定层名,设置标注字高

查看全部评分

回复

使用道具 举报

发表于 2012-12-11 17:15:00 | 显示全部楼层
本帖最后由 x_s_s_1 于 2012-12-11 17:17 编辑
zzc83 发表于 2012-12-11 16:43
谢谢叮咚,经测试,基本满足要求,能不能增加容差处理,比如设置容差5, 200梁和195 205的梁都是一个颜色 ...


没有梁宽限制,实测多少就是多少,但是要中心线,给了源码,如不是中心线的可根据自己需要改改。
回复

使用道具 举报

 楼主| 发表于 2012-12-11 17:41:10 | 显示全部楼层
本帖最后由 zzc83 于 2012-12-11 17:43 编辑
叮咚 发表于 2012-12-11 16:59
你们做的什么东西,梁宽,还有195 205 这种?
最好有个梁宽的规格 240 200 300 ……

有人画图极度不标准,才有会这样的情况,而且画斜梁也容易出现这样的情况
请帮忙加一下,谢谢
回复

使用道具 举报

 楼主| 发表于 2012-12-11 17:46:10 | 显示全部楼层
本帖最后由 zzc83 于 2012-12-11 17:47 编辑
x_s_s_1 发表于 2012-12-11 17:12
这个看合适不

谢谢帮忙
选择对象:  参数类型错误: lselsetp nil

点评

(vl-load-com)  发表于 2012-12-11 17:51
回复

使用道具 举报

 楼主| 发表于 2012-12-11 18:32:14 | 显示全部楼层
本帖最后由 zzc83 于 2012-12-11 18:39 编辑
x_s_s_1 发表于 2012-12-11 17:15
没有梁宽限制,实测多少就是多少,但是要中心线,给了源码,如不是中心线的可根据自己需要改改。


可以用了,谢谢先。还是没有容差处理的功能啊。
回复

使用道具 举报

发表于 2012-12-12 08:40:08 | 显示全部楼层
x_s_s_1 发表于 2012-12-11 17:12
这个看合适不

没有梁宽限制,如果没有两边的线,怎么办?只有一边有线怎么办?

点评

那是制图员有问题,仅针对测试图  发表于 2012-12-12 12:01
回复

使用道具 举报

 楼主| 发表于 2012-12-12 13:07:01 | 显示全部楼层
叮咚 发表于 2012-12-12 08:40
没有梁宽限制,如果没有两边的线,怎么办?只有一边有线怎么办?

最好可以标示梁宽0并圈出来
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-3 13:41 , Processed in 0.171655 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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