明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1959|回复: 6

求助这个代码怎么加DCL对话框。谢谢

[复制链接]
发表于 2009-12-18 14:04:00 | 显示全部楼层 |阅读模式
<br/>(defun c:7( / pt l1 w1 px py ll)<br/>     (setq pt (getpoint "\n请点选四方形的中心点&lt;0,0&gt;: "))<br/>     (if (null pt)<br/>        (setq pt '(0 0))<br/>     )<br/>     (princ pt)<br/>     (if (null l)<br/>        (setq l '100.0)<br/>     )<br/>     (princ "\n请输入四方形长度&lt;")<br/>     (princ l)<br/>     (princ "&gt;: ")<br/>     (if (setq l1 (getdist))<br/>       (setq l l1)<br/>     )<br/>     (setq px (polar pt '0 (* l 0.5)))<br/>     (if (null w)<br/>        (setq w '100.0)<br/>     )<br/>     (princ "\n请输入四方形宽度&lt;")<br/>     (princ w)<br/>     (princ "&gt;: ")<br/>     (if (setq w1 (getdist))<br/>       (setq w w1)<br/>     )<br/>     (setq py (polar pt (* pi 0.5) (* w 0.5)))  <br/>     (setq pt1 (polar px (* pi 1.5) (/ w 2)))<br/>     (setq pt2 (polar py pi (/ l 2)))<br/>     (setq old_osm (getvar "osmode"))<br/>     (setvar "osmode" 0)<br/>     (command "rectang" pt1 pt2) <br/>     (setq ll l)<br/>     (if (&gt; l w)<br/>       (setq ll w)<br/>     )<br/>     (if (null (tblsearch "layer" "center"))<br/>       (command "layer" "n" "center" "c" "1" "center" "lt" "center" "center" "")<br/>     )<br/>     (command "line" (polar px '0 (* ll '0.05))<br/>                     (polar px pi (+ l (* ll '0.05))) "")<br/>     (command "chprop" (entlast) "" "c" "1" "lt" "center" "la" "center" "")<br/>     (command "line" (polar py (* pi '0.5) (* ll '0.05))<br/>                     (polar py (* pi '1.5) (+ w (* ll '0.05))) "")<br/>     (command "chprop" (entlast) "" "c" "1" "lt" "center" "la" "center" "")<br/>     (setvar "osmode" old_osm)<br/>     (princ)      <br/>) <br/>
发表于 2009-12-18 18:36:00 | 显示全部楼层
本帖最后由 作者 于 2009-12-19 12:50:47 编辑

游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0
 楼主| 发表于 2009-12-19 12:15:00 | 显示全部楼层

谢谢您的回复。

我在调试过程中发现一个问题

  1.    (action_tile "accept" "(getdata)(done_dialog 1)")
  2.    (action_tile "cancel" "(done_dialog 0)")原代码

   (action_tile "ok" "(getdata)(done_dialog 1)")
   (action_tile "cancel" "(done_dialog 0)")好象要改成这样才能运行。

现在运行到25行  (setq px (polar pt 0 (* l 0.5)))的L付值有问题?可以在麻烦您回答一下吗?

发表于 2009-12-19 12:52:00 | 显示全部楼层
少了个函数
(defun getdata ()
 (setq l (atof (get_tile "my_l")))
 (setq w (atof (get_tile "my_w")))
)
发表于 2009-12-19 13:16:00 | 显示全部楼层
将对话框与lisp合并到一起
  1. (defun c:7 (/ pt l1 w1 px py ll)
  2.   (defun getdata ()
  3.     (if (and (/= (get_tile "my_l") "") (/= (get_tile "my_w") ""))
  4.       (progn (setq l (atof (get_tile "my_l"))
  5.      w (atof (get_tile "my_w"))
  6.       )
  7.       (done_dialog 1)
  8.       )
  9.       (alert "没有输入数据!")
  10.     )
  11.   )
  12.   (defun Show_dcl ()
  13.     (setq dcl_id (load_dialog (setq Dcl_File (creat_dlg)))) ;对话框加载
  14.     (vl-file-delete Dcl_File)  ;加载后删除DCL文件
  15.     (new_dialog "rct" dcl_id)
  16.     (set_tile "my_l" "100.0")
  17.     (set_tile "my_w" "100.0")
  18.     (action_tile "accept" "(getdata)")
  19.     (action_tile "cancel" "(done_dialog 0)")
  20.     (start_dialog)
  21.   )
  22.       
  23.   (if (= (Show_dcl) 1)
  24.     (progn
  25.       (setq pt (getpoint "\n请点选矩形的中心点<0,0>: "))
  26.       (if (null pt)
  27. (setq pt '(0 0))
  28.       )
  29.       (princ pt)
  30.       (setq px (polar pt 0 (* l 0.5)))
  31.       (setq py (polar pt (* pi 0.5) (* w 0.5)))
  32.       (setq pt1 (polar px (* pi 1.5) (/ w 2)))
  33.       (setq pt2 (polar py pi (/ l 2)))
  34.       (setq old_osm (getvar "osmode"))
  35.       (setvar "osmode" 0)
  36.       (command "rectang" pt1 pt2)
  37.       (setq ll l)
  38.       (if (> l w)
  39. (setq ll w)
  40.       )
  41.       (if (null (tblsearch "layer" "center"))
  42. (command "layer"   "n"      "center"  "c"  "1"
  43.    "center"  "lt"      "center"  "center"  ""
  44.   )
  45.       )
  46.       (command "line"
  47.         (polar px '0 (* ll '0.05))
  48.         (polar px pi (+ l (* ll '0.05)))
  49.         ""
  50.       )
  51.       (command "chprop"
  52.         (entlast)
  53.         ""
  54.         "c"
  55.         "1"
  56.         "lt"
  57.         "center"
  58.         "la"
  59.         "center"
  60.         ""
  61.       )
  62.       (command "line"
  63.         (polar py (* pi '0.5) (* ll '0.05))
  64.         (polar py (* pi '1.5) (+ w (* ll '0.05)))
  65.         ""
  66.       )
  67.       (command "chprop"
  68.         (entlast)
  69.         ""
  70.         "c"
  71.         "1"
  72.         "lt"
  73.         "center"
  74.         "la"
  75.         "center"
  76.         ""
  77.       )
  78.       (setvar "osmode" old_osm)
  79.     )
  80.   )
  81.   (unload_dialog dcl_id)
  82.   (princ)
  83. )
  84. (defun creat_dlg (/ Dcl_File file str)
  85.   (setq Dcl_File (vl-filename-mktemp nil nil ".Dcl")
  86. file  (open Dcl_File "w")
  87.   )
  88.   (foreach str '("rct:dialog{"  ;
  89.    "label="四方形参数输入";"
  90.    ":edit_box{label="长度:";key="my_l";}"
  91.    ":edit_box{label="宽度:";key="my_w";}"
  92.    "ok_cancel;"
  93.    "}"
  94.   )
  95.     (write-line str file)
  96.   )
  97.   (close file)
  98.   Dcl_File
  99. )
 楼主| 发表于 2009-12-19 15:35:00 | 显示全部楼层
万分感谢俩位的回答。两个多可以用!
发表于 2012-12-5 15:33:36 | 显示全部楼层
学习            
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-4 02:18 , Processed in 0.208944 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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