明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1361|回复: 2

[函数] 为什么不能获取对话框值打断线

[复制链接]
发表于 2011-6-7 19:15:11 | 显示全部楼层 |阅读模式
(defun C:xyz()
  (setvar "expert" 0)
  (setq dcl_id(load_dialog "PID_xyz"))
  (new_dialog "PID_xyz" dcl_id)
  (action_tile "P1" "(ok_scale) (done_dialog 1)")
  (setq dd(start_dialog))
  (cond
     ((= dd 1) (C:xyz_dc))     
  )
(prin1)
)
(defun ok_scale()
     (setq pid_scale (get_tile "xyz_scale"))
     (if (= nil pid_scale)
           (setq pid_scale 1)
     )
)
(defun c:xyz_dc ( / pt an lin1 ps1 ps2 lin2 bn vals p1 p2 paras)
  (setvar "CMDECHO" 0)
  (command ".undo" "begin");设定UNDO起点
  (setq pt (getpoint "选择插入点\n"))
  (setq an (getangle pt "选择角度\n"))
  (setq lin1 (ssget pt '((0 . "*LINE"))))
  (command "-insert" "流量计" pt  pid_scale "" (/ (* an 180) PI))    ;; pid_scale 在插入块时能实现比例
  ;;取得选择集中第一条直线
  (setq lin1 (ssname lin1 0))
  ;;计算打断点
  (princ (strcat "\n 值为: " pid_scale))   ;; pid_scale 能打印出值
  (setq p1 (polar pt an (* pid_scale 6))) ;;   但是(* pid_scale 6)为什么不能得到值,执行后面打断就有问题,
                                     ;;pid_scale 6如果改成常数没问题,pid_scale 为通过对话框获取                                                      
                       
  ;;执行打断
  (command "._break" lin1 "non" p1 "non" pt)
  (command ".undo" "end")
  (setvar "CMDECHO" 1)
)
 楼主| 发表于 2011-6-7 19:33:45 | 显示全部楼层
(defun ok_scale()
     (setq pid_scale (get_tile "xyz_scale"))
     (if (= nil pid_scale)
           (setq pid_scale 1)
     )
)

改为:

(defun ok_scale()
     (setq pid_scale (get_tile "xyz_scale"))
)

还是不行,请求帮助
发表于 2011-6-7 20:52:22 | 显示全部楼层
pid_scale从对话框中读出的是字符串,进行运算前要转换成数字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-26 08:26 , Processed in 0.239557 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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