HEATS 发表于 2010-9-13 22:00:39

基于组件的三维CAD系统开发的关键技术研究(三)

<p>  2 .3沿曲线标注</p>

<p>  在设计中会遇到沿给定曲线进行标注问题,如平面布置图中的开挖线符号沿开挖轮廓的标注,剖面图中岩石符号沿轮廓线标注、点筋标注、沿任意曲线进行汉字标注等。此类问题主要应用AutoCAD的Measure或divide命令来解决。两个命令的主要差别是前者按指定的长度在曲线上标注,后者按给定的分段数等分曲线并在等分点处进行标注。要标注的轮廓曲线最好用pline线,要标注的符号预先做成图块,图块采用单位块,执行measure或divide命令,选取要标注的曲线,指定标注符号,分段长度或分段数即可完成标注,当发现标注的符号太密或太疏时,可以执行erase命令选择P进行删除,比例不合适或符号方向不正确,可以利用特性编辑器,选中所有标注符号,对标注符号的比例和旋转角度进行调整,直到满意为止。对于更高级的应用,可以编制LSP程序,实现符号和文字沿任意曲线标注。</p>

<p>  2 .4表格生成</p>

<p>  AutoCAD本身没有表格处理功能,设计图纸中工程量表、钢筋表等涉及到表格生成的问题可以采用以下方法处理:</p>

<p>  (1)直接把Word或Excel文件中的表格直接粘贴到CAD图形中,修改时只要双击图中的表格即可进入Word或Excel中进行编辑修改,修改完成后退出即可返回到AutoCAD中继续进行设计,该法优点是方便,快捷,易于掌握,可以充分利用Excel的强大计算功能。缺点是表格在AutoCAD中并不是一个普通图元,无法利用CAD功能对表格的字高、颜色和线宽进行编辑。</p>

<p>  (2)编制LSP程序,依次输入表格标题、表格行数、表格列数、表格行高和列宽以及表格插入点等参数,可以自动生成表格,表格中已经按仿Excel形式填入了文字,可以用字处理软件对表格中文字进行编辑修改。</p>

<p>  (defun C:mtab()</p>

<p>  (setq tb1 nil tb2 nil tb3 nil)</p>

<p>  (setq rows (getint "表格行数"))</p>

<p>  (setq cols (getint "表格列数"))</p>

<p>  (setq rowh (getreal "行高"))</p>

<p>  (setq colw (getreal "列宽"))</p>

<p>  (setq p1 (getpoint "/n表格左上角点位置:"))</p>

<p>  (command "pline" p1 "w" "0.5" "0.5"</p>

<p>  (setq p2 (list (+ (car p1) (* cols colw)) (cadr p1)))</p>

<p>  (setq p4 (list (car p2) (- (cadr p2) (* rows rowh))))</p>

<p>  (setq p3 (list (car p1) (- (cadr p2) (* rows rowh))))</p>

<p>  "C" )</p>

<p>  (setq n 1)</p>

<p>  (while (< n rows);绘水平线表格</p>

<p>  (command "pline" (list (car p1) (- (cadr p1) (* n rowh))) "w" "0" "0"</p>

<p>  (list (car p2) (- (cadr p2) (* rowh n))) "")</p>

<p>  (setq n (+ n 1))</p>

<p>  )</p>

<p>  (setq n 1)</p>

<p>  (while (< n cols);绘垂直表格线</p>

<p>  (command "pline" (list (+ (car p1) (* n colw)) (cadr p1)) "w" "0" "0" (list (+ (car p1) (* n colw)) (cadr p3))</p>

<p>  "")</p>

<p>  (setq n (+ n 1))</p>

<p>  )</p>

<p>  (command "text" "m" (list (+ (car p1) (* 0.5 cols colw))</p>

<p>  (+ (cadr p1) 5)) "3" "0" "TITLE" )</p>

<p>  (setq n 0)</p>

<p>  (while (< n rows)</p>

<p>  (setq m 0)</p>

<p>  (while (< m cols)</p>

<p>  (cond</p>

<p>  ((< m 26) (setq bzstr (chr (+ 65 m))))</p>

<p>  ((>= m 26) (setq bzstr (strcat (chr (+ 64 (/ m 26))) (chr (+ 65 (- m (* 26 (/ m 26))))))))</p>

<p>  )</p>

<p>  (command "text" "m" (list (+ (car p1) (* 0.5 colw) (* m colw));表格内容标注</p>

<p>  (- (cadr p1) (* 0.5 rowh) (* n rowh)))</p>

<p>  (getvar"TEXTSIZE") "0" (strcat bzstr (itoa (+ n 1))))</p>

<p>  (setq m (+ m 1))</p>

<p>  )</p>

<p>  (setq n (+ n 1))</p>

<p>  ))</p>

<p>  2 .6高程小数位数处理</p>

<p>  尺寸标注小数位数很容易调整,但诸如高程、表格中数字要调整则很困难,借助LSP程序的调整很方便,只要选取需要调整的数字,根据提示输入需要保留的小数位数,则程序自动对所有选种数字进行修改。</p>

<p>  (defun entsgc()</p>

<p>  (setq n 0)</p>

<p>  (setq sh (sslength e1))</p>

<p>  (while (< n sh) (setq x (entget (ssname e1 n)))</p>

<p>  (if (= (fld 0 x) "TEXT")</p>

<p>  (progn</p>

<p>  (setq agc (fld 1 x))</p>

<p>  (setq c (substr agc 1 1))</p>

<p>  (if (or (= c "+") (= c "-") (and (>= c "0") (<= c "9")))</p>

<p>  (progn</p>

<p>  (if (or (= c "+") (= c "-"))</p>

<p>  (setq bgc (substr agc 2))</p>

<p>  (setq bgc agc)</p>

<p>  )</p>

<p>  (setq cgc (atof bgc))</p>

<p>  (setq zh (rtos cgc 2 gcws))</p>

<p>  (if (or (= c "+") (= c "-"))</p>

<p>  (setq zh (strcat c zh)))</p>

<p>  (setq x (subst (cons 1 zh) (assoc 1 x) x))</p>

<p>  (entmod x)</p>

<p>  )</p>

<p>  ))</p>

<p>  ))</p>

<p>  (setq n (+ n 1)))</p>

<p>  )</p>

<p>  (defun c:yxws()</p>

<p>  (setq e1 (ssget))</p>

<p>  (setvar "dimzin" 0)</p>

<p>  (setq gcws (getint "保留小数位数:"))</p>

<p>  (if e1 (entsgc) (print "/n not found"))</p>

<p>  (setq x nil)</p>

<p>  )</p>



               
页: [1]
查看完整版本: 基于组件的三维CAD系统开发的关键技术研究(三)

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网