一叶舟 发表于 2013-1-16 17:12:06

求助:如何在模型空间插入计算结果文本

下面是小弟编写的小程序,如何将最后的结果通过插入点定位在模型空间中输出?不知哪里出了问题,请大虾指点。先谢谢了。
(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)
)

zdqwy19 发表于 2013-1-16 17:40:14

RE: 求助:如何在模型空间插入计算结果文本

粗看了一下,模型空间未定义。

一叶舟 发表于 2013-1-16 20:39:56

本帖最后由 一叶舟 于 2013-1-16 20:47 编辑

      (setq   AcadObject   (vlax-get-acad-object)
                  AcadDocument (vla-get-ActiveDocument Acadobject)
                  mSpace       (vla-get-ModelSpace Acaddocument)
      )
多谢zdqwy19 指点。加了上面几行代码,似乎可以了。
上面的代码是VLisp么,Lisp函数里找不到。

mokson 发表于 2013-1-18 14:37:14

太深奥了。

zdqwy19 发表于 2013-1-18 14:44:37

RE: 求助:如何在模型空间插入计算结果文本

一叶舟 发表于 2013-1-16 20:39 static/image/common/back.gif
(setq   AcadObject   (vlax-get-acad-object)
                  AcadDocument (vla-get-ActiveD ...

是的,看一下Cad2013的帮助文件,里面有Lisp代码示例,低版本只有VBA示例。

随风的pp 发表于 2013-1-18 15:26:04

编程怎么能入门。。。求指教

一叶舟 发表于 2013-1-22 18:32:06

找一本入门的书。若是学过其他语言,就容易学了。

一叶舟 发表于 2013-1-22 18:42:40

顺便问一下zdqwy19大虾,Express里overkill命令可以删除重叠的线段,留一条,能否将重叠的直线全部删除,不留一条线。或者说如何选择重叠的直线段,完全重叠的。 谢谢。
页: [1]
查看完整版本: 求助:如何在模型空间插入计算结果文本