明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1886|回复: 5

[已解答] 命令反应器,调用函数时为何崩溃退出?

[复制链接]
发表于 2014-2-20 11:22:48 | 显示全部楼层 |阅读模式
本帖最后由 ou_y_x 于 2014-2-20 12:30 编辑

请教一下各位,
未知命令反应器,调用回调函数时,输入33S,单击直线,
运行到entmake时,CAD出现如图问题崩溃退出:

(setq unknowncommand_reactor nil)
(if (not unknowncommand_reactor)(setq unknowncommand_reactor
        (vlr-command-reactor nil '((:vlr-unknownCommand . wzmlfyq)))
))

(defun wzmlfyq(a str / zimu shuzi changdu genshu zhijing pdml)
  (setq zimu "ASDFGQWERT" shuzi "123456789")
  (setq str(car str))
  (setq changdu(strlen str))
  (setq genshu(substr str 1 1) zhijing(substr str changdu 1))
  (setq pdml(and (vl-string-search genshu shuzi) (vl-string-search zhijing zimu)))
  (if pdml (progn
             (setq str(wenzith str changdu))
             (sclpeijin str)
    )))

(defun wenzith(zfc a / yzf xzf)
  (setq yzf(substr zfc a 1))
  (cond ((= yzf "A") (setq xzf "%%13212"))
        ((= yzf "S") (setq xzf "%%13214"))
        ((= yzf "D") (setq xzf "%%13216"))
        ((= yzf "F") (setq xzf "%%13218"))
        ((= yzf "G") (setq xzf "%%13220"))
        ((= yzf "Q") (setq xzf "%%13222"))
        ((= yzf "W") (setq xzf "%%13225"))
        ((= yzf "E") (setq xzf "%%13228"))
        ((= yzf "R") (setq xzf "%%13230"))
        ((= yzf "T") (setq xzf "%%13232"))
        )
  (setq zfc (vl-string-subst xzf yzf zfc (- a 1)))
  zfc)

(defun sclpeijin (peijin / cm zg p1 n1 s1 d1 d2 ang)
  (setq cm (getvar "cmdecho"))
  (setvar "cmdecho" 0 )
  (setq zg(* 0.25 (getvar 'ltscale)))
  (setq n1 (entsel "\n请单击直线"))
  (setq s1 (entget (car n1)))   
  (if (= (cdr (assoc 0 s1)) "LINE")
    (progn
  (setq p1 (osnap (cadr n1) "nea"))
  (setq d1 (cdr (assoc 10 s1)))
  (setq d2 (cdr (assoc 11 s1)))
  (setq ang (angle d1 d2))
         (entmake (list
               (cons 0 "TEXT")
               (cons 1 peijin)
               (cons 10 p1)
               (cons 40 zg)
               (cons 50 ang)
               (cons 41 0.7)
               ))))
  (setvar "cmdecho" cm)
  (princ))




本帖子中包含更多资源

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

x
发表于 2014-2-20 12:00:09 | 显示全部楼层
我的是正版CAD,也是这样
 楼主| 发表于 2014-2-20 14:21:11 | 显示全部楼层
本帖最后由 ou_y_x 于 2014-2-20 14:45 编辑
菜卷鱼 发表于 2014-2-20 12:00
我的是正版CAD,也是这样

谢谢回复。
我写完第一次运行时成功了,后来每次都是图片上的错误。
逐句运行的时候,到了entmake后的(list ……)那里发生错误。
实在是费解。
发表于 2014-2-20 16:38:34 | 显示全部楼层
ou_y_x 发表于 2014-2-20 14:21
谢谢回复。
我写完第一次运行时成功了,后来每次都是图片上的错误。
逐句运行的时候,到了entmake后的( ...

把entmake换成vla函数:
(setq
        text (vla-addtext
               (vla-get-ModelSpace
                 (vla-get-ActiveDocument (vlax-get-acad-object)))
               peijin
               (vlax-3d-point p1)
               zg))
      (vla-put-Rotation text ang)
      (vla-put-ScaleFactor text 0.7)
发表于 2014-2-20 21:02:49 | 显示全部楼层
本帖最后由 edata 于 2014-2-20 21:15 编辑

楼上正解。
 楼主| 发表于 2014-2-21 20:10:25 | 显示全部楼层
菡萏 发表于 2014-2-20 16:38
把entmake换成vla函数:
(setq
        text (vla-addtext

谢谢。问题已解决。
但发帖也是希望各位帮忙找出entmake执行不了的原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 12:15 , Processed in 0.156619 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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