明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3487|回复: 6

[讨论] 截断符号源码解析与测试(支持UCS,左击比例更改)

[复制链接]
发表于 2014-2-19 18:44:02 | 显示全部楼层 |阅读模式
截断符号源码解析与测试(支持UCS,左击比例更改)
把箍筋拉筋统一符号命令更新完源码之后——拉筋箍筋符号源码解析与测试(支持UCS、形式切换、智能比例、统一命令)http://bbs.mjtd.com/forum.php?mo ... amp;fromuid=7303580
,总觉得还少了一个,对,就是截断符号了(网上有的,是我并不喜欢的对话框与输入)。
很简单的动态和逻辑,直接上主函数
  1. (defun C:CSB( / pt1 pt2 ss num-pt  );cut-Symbol 标高符号

  2. ;(while (setq pt1 (getpoint  "第一点<exit>")) ;不需要循环
  3. ;(setq flag nil)
  4. (setq num-pt 0)
  5. (setq pt1 (getpoint  "第一点<exit>"))
  6. (setq pt2 (getpoint pt1 "第二点"))

  7. (setq ss (cut_symbol pt1 pt2 num-pt))
  8.      
  9.       ;捕捉左键,进行缩放测试
  10.       (prompt "\n比例不对?左击,1:25、1:50、1:100循环 or 右击、空格、回车键确认退出")
  11.       (while (and (setq ptr (grread t 15 2))
  12.               (not (and (= 2 (car ptr)); 键盘事件
  13.                     (or (= 13 (cadr ptr)) (= 32 (cadr ptr))) ;_Enter Space
  14.             ))
  15.              (not (or (= (car ptr) 11) (= (car ptr) 25)));_Mouse Right button
  16.                        ;flag   
  17.                  )   
  18.                  ;(redraw)
  19.       (cond ((= (car ptr) 3);_Mouse Left button
  20.          (if ss
  21.          (progn (ss_delete ss)(setq num-pt (1+ num-pt)) (setq ss (cut_symbol pt1 pt2 num-pt))) ;切换标志,删除,生成
  22.          ) ;左键进行循环,测试ss选择集方式可行。
  23.            ))
  24.        ;(cond ((= (car ptr) 2);键盘事件 ,支持撤销。但是觉得不需要。注释掉
  25.                   
  26.          ;(if (or (= (ascii "U") (cadr ptr)) (= (ascii "u") (cadr ptr))) (if ss (progn (ss_delete ss) (setq flag (not flag)))))
  27.            ;))
  28.            );while
  29.       ;捕捉左键,进行缩放测试
  30.    
  31.     ; );while
  32.   (princ)
  33. );cs
  34. (princ "\nCSB  Cut SymBol 截断符号命令加载成功\nDesigned by 林霄云 2014年2月18日")
  35. (princ)
cut_symbol函数就是简单的根据输入的点,采用一点点不值一哂的算法,生成截断符号。
主要的操作有,坐标变换以支持UCS,确定参数以支持不同比例,生成图层,生成简单多段线。
  1. (defun cut_symbol(pt0 pt00 pt-num / ss mid-pt self-ang pt1 pt2 pt1a pt2a pt10 pt10a a d h temp-dis temp-list)
  2. ;函数cut-symbol(pt0 pt00 sc-flag),参数sc-flag 比例,当nil为1:100,否则为1:25,返回值,生成对象的选择集
  3. ;Desiged by 林霄云 2014年1月20日
  4. (setq ucszdir (trans '(0 0 1) 1 0 T ));生成OCS法向量
  5. ;(setq ang (angle '(0 0 0) (trans (getvar "UCSXDIR") 0 ucszdir)));生成UCS在OCS的角度,不通过组码,通过旋转实现
  6. (setq pt0 (trans (trans pt0 1 0) 0 ucszdir ));将插入点从UCS转WCS后转
  7. (setq pt00 (trans (trans pt00 1 0) 0 ucszdir ))

  8. (setq mid-pt (mid_point pt0 pt00))
  9. (setq self-ang (angle pt0 pt00))

  10. (setq pt-num (rem pt-num 3))
  11. ;pt-num 0
  12. (setq a (/ pi 3.0 )
  13.     d 200
  14.     h 150 )

  15. ;判断比例,按1:50与1:25考虑
  16. (if (= pt-num 1)
  17. (setq d 50
  18.     h 37.5 ))
  19.    
  20. (if (= pt-num 2)
  21. (setq d 100
  22.     h 75 ))
  23.    
  24. (setq pt1 (polar mid-pt (- self-ang pi) h))
  25. (setq pt10 (polar pt0 (- self-ang pi)  d))

  26. (setq pt1a (polar mid-pt self-ang   h))
  27. (setq pt10a (polar pt00 self-ang   d))

  28. (setq pt2 (polar pt1 (- self-ang a ) h))
  29. (setq pt2a (polar pt1a  (- self-ang pi a) h))

  30. (setq layername "G_SYMBOL(符号)")
  31. (make_layer layername "Continuous" 3 0)

  32. (setq temp-list (list pt10 pt1 pt2 pt2a pt1a pt10a))

  33. (setq ss (ssadd)) ;设置选择集
  34. (setq ss (ssadd (make_pline temp-list layername nil) ss))
  35. ;多线

  36. )
结果:实现目标,详附图。


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-2-19 21:00:10 | 显示全部楼层
要是能左击减小比例,右击加大比例,还可以直接输入比例就好
 楼主| 发表于 2014-2-19 21:48:27 | 显示全部楼层
tanle2020 发表于 2014-2-19 21:00
要是能左击减小比例,右击加大比例,还可以直接输入比例就好

左击比例循环;去除输入操作;去除对话框,是本命令的初衷。在结构专业中,常见比例就是1:100、25、50,满足一般要求。且截断符号的应用频率是比较低的。
 楼主| 发表于 2014-2-19 21:49:10 | 显示全部楼层
tanle2020 发表于 2014-2-19 21:00
要是能左击减小比例,右击加大比例,还可以直接输入比例就好

左击比例循环;去除输入操作;去除对话框,是本命令的初衷。在结构专业中,常见比例就是1:100、25、50,满足一般要求。且截断符号的应用频率是比较低的。
发表于 2014-2-19 22:41:58 | 显示全部楼层
支持源码,感谢林大哥!
发表于 2014-4-28 14:46:22 | 显示全部楼层
"G_SYMBOL(符号)" 这是华阳的图层吗?
发表于 2014-4-28 15:22:01 | 显示全部楼层
支持源码         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-21 23:22 , Processed in 0.180486 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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