Cad_Cae 板


LINE

主要是靠lengthen指令与perimeter系统变数来完成 如果有兴去挑战的版友可以自己试着写看看 本来我自己还有另外写一套计算各种2d图元的副程式 不过有现成的lengthen可以用就用之,省的跟spline奋斗 lisp使用方法可以参考我前一篇面域加总或其他有讨论lisp的文章 以下为len2d.lisp的程式码 使用len2d指令然後照提示操作即可 会要求输入两个整数参数(都按enter则使用预设) 再来请选取要加总长度的2d图元 视需要除了印出总长还可以有条列资料印出(不过大概不需要) 程式效率就先不要求了(因为lengthen一定会印出东西来,cmdecho设0也没用) 不会太慢不用担心 另外如果要求只计算某图层的图元 先以手动的方法切换到只显示该图层吧 虽然ssget "X" 过滤选集加个条件很快 不过我懒的写XD (直接抓lisp档) http://0rz.tw/094bD ;len2d.lisp ;;;=============Copyright============= ;;;此为简易2d线段长度计算及加总程式 ;;;作者为台大BBS站PTT Egriawei ;;;欢迎使用及添改,惟请注明参考出处 ;;;若有问题请来信讨论,请多指教 ;;;=================================== (defun c:len2d (/ ssa mode isprint sum) ;===环境设定=== (graphscr) ;叫出图框 ;;;物件锁点等设定请视个人情况调整添改 ;===提示与参数输入=== (princ "********************************************************\n") (princ "框选或连(单)选欲计算及加总长度的2d线段") (princ "(需为line,pline,spline,arc,circle,ellipse)\n") (princ "********************************************************\n") (setq mode (getint "选取模式:[(1)自行选取(2)全选图面]<预设自行选取>:") mode (if mode mode 1) isprint (getint "输出模式:[(1)仅列总长(2)条列及总长]<预设仅列总长>:") isprint (if (= isprint 2) "t" "f") ) ;===程式执行=== (setq ssa (ssadd) ssa (get2dss mode) sum (len2d ssa isprint) ) ;===程式结束=== (princ (strcat "\n所选取2d图元总长为" (rtos sum) "\n计算完毕!\n")) (princ) ) ;===2d线段图元蒐集副程式=== (defun get2dss (mode / ss ssa en en_data entype i) ;(princ (strcat "mode is " (itoa mode) "\n")) (setq ssa (ssadd) ;2d线段图元集合 i 0 ;起始值变数 ) (cond ((= mode 1) (progn (setq ss (ssget)) ;图元集合 (if (/= ss nil) (repeat (sslength ss) (setq en (ssname ss i) ;取集合第一个图元 en_data (entget en) ;图元资料 entype (cdr (assoc 0 en_data)) ;图元种类 i (1+ i) ;next ) (if (or (= entype "LINE") (= entype "LWPOLYLINE") (= entype "CIRCLE") (= entype "ARC") (= entype "ELLIPSE") (= entype "SPLINE") ) (setq ssa (ssadd en ssa)) ;若为2d线段图元则蒐集入ssa选择集 ) );end-repeat );end-if );end-mode1-progn );end-mode1 ((= mode 2) (progn (setq ssa (ssget "X" (list (cons -4 "<OR") (cons 0 "LINE") (cons 0 "LWPOLYLINE") (cons 0 "CIRCLE") (cons 0 "ARC") (cons 0 "ELLIPSE") (cons 0 "SPLINE") (cons -4 "OR>") ) ) );以选集过滤器方式蒐集2d线段图元 );end-mode2-progn );end-mode2 (t (princ (strcat "未定义的mode:" (itoa mode))));end-t );end-cond ssa ) ;===计算2d图元长度副程式=== (defun len2d (ssa isprint / en en_data entype ename lenlist i len sum ) (setq i 0 sum 0.0 lenlist nil) (if (/= ssa nil) (progn (repeat (sslength ssa) (setq en (ssname ssa i) ;取得集合第一个图元 len (get_perimeter en) ;计算图元长度 sum (+ sum len) ;加总 lenlist (if (= isprint "t") (cons len lenlist)) i (1+ i) ) );end-repeat );end-if-progn );end-if (if (= isprint "t") (progn (princ "\n") (setq i 0 lenlist (reverse lenlist) ) (repeat (sslength ssa) (setq en (ssname ssa i) ;取集合第一个图元 en_data (entget en) ;图元资料 entype (cdr (assoc 0 en_data)) ;元体类型 ename (cdr (assoc -1 en_data)) ;元体名称 ) (princ ename) (princ (strcat "类型:" entype ";线段长:" (rtos (nth i lenlist)) "\n")) (setq i (1+ i)) );end-repeat );end-if-progn );end-if sum;回传总长 ) ;===计算有周长图元之长度副程式=== (defun get_perimeter (en / len) (command "lengthen" en "") (setq len (getvar "perimeter"));取得周长 ) ;================================ (princ "2d线段长度计算及加总程式len2d.lsp\n") (princ "<c:len2d>\n") (princ) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.197.195 ※ 编辑: Egriawei 来自: 118.168.197.195 (05/27 02:42)
1F:推 s9122405:Eg大大是高手! 推一个~ 05/27 22:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP