求助:如何在模型空间插入计算结果文本
下面是小弟编写的小程序,如何将最后的结果通过插入点定位在模型空间中输出?不知哪里出了问题,请大虾指点。先谢谢了。(defun c:ss ()
(graphscr)
(VL-LOAD-COM)
(setq oce (getvar "CMDECHO"));保存默认CMDECHO值
(setvar "CMDECHO" 0) ;关闭命令响应
(princ "\n请选择文本")
(setq dtxt (ssget '((0 . "TEXT")))) ;选中文本图元
(setq i 0) ;定义变量i,初值0
(setq txt_tt 0) ;定义变量txt_tt,初值0
(repeat (sslength dtxt) ;返回选择集的图元数作为循环次数,进入循环!
(setq x (entget (ssname dtxt i))) ;读取某个文本数据表
(setq n (vl-string-search "M" (cdr (assoc 1 x)))) ;搜索文本中的字母M,并返回M所在位置编号,0起步
(setq dt(atof(substr(cdr (assoc 1 x)) 3 n)));将N=*中的*转换成数值
;(princ "\n") ;换行
;(princ dt) ;打印N值
(setq txt_tt (+ txt_tt dt)) ;累加N值
(setq i (1+ i)) ;结束一个循环,指针数加1
)
(setq Nmax txt_tt) ;轴力合力赋值给Nmax
(setq txt_tt (rtos txt_tt 2 2))
(princ (strcat "\Nmax sum = " txt_tt)) ;实数转换为字符串
(setq Nf (getint "\n请输入特征值:"))
(setq txt_np (/ Nmax Nf));计算所需桩数
(setq txt_np (rtos txt_np 2 2));实数转换为字符串
(setq text1 (strcat txt_tt txt_np )) ;输出字符串
(setq insertpt (getpoint "\n请输入文字插入点: ")) ;返回用户插入点坐标值
(setq height (getint "\n请输入文字高度:"));返回用户输入文字高度值
(setq insertp1 (vlax-3D-point insertpt)
textobj1 (vla-addtext modelspace text1 insertp1 height)
)
(setvar "CMDECHO" oce)
)
RE: 求助:如何在模型空间插入计算结果文本
粗看了一下,模型空间未定义。 本帖最后由 一叶舟 于 2013-1-16 20:47 编辑(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace (vla-get-ModelSpace Acaddocument)
)
多谢zdqwy19 指点。加了上面几行代码,似乎可以了。
上面的代码是VLisp么,Lisp函数里找不到。
太深奥了。
RE: 求助:如何在模型空间插入计算结果文本
一叶舟 发表于 2013-1-16 20:39 static/image/common/back.gif(setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveD ...
是的,看一下Cad2013的帮助文件,里面有Lisp代码示例,低版本只有VBA示例。 编程怎么能入门。。。求指教 找一本入门的书。若是学过其他语言,就容易学了。 顺便问一下zdqwy19大虾,Express里overkill命令可以删除重叠的线段,留一条,能否将重叠的直线全部删除,不留一条线。或者说如何选择重叠的直线段,完全重叠的。 谢谢。
页:
[1]