明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 224|回复: 2

[提问] 面板radio_button按钮及修剪问题求助,谢谢~

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式
  1. (defun c:tt (/ dcl_file dcl_id)
  2.   (setvar "cmdecho" 0)
  3.   (command ".UNDO" "BE")
  4.   (setq snap (getvar "osmode") ) (setvar "osmode" 0)
  5.   (setq old_lay (getvar "clayer") )

  6.   (defun make_dcl  (/ lst_str str file f)
  7.     (setq lst_str
  8.       '("pmbj:dialog
  9.         {label = "平面布局";"

  10.           ":boxed_column
  11.             {fixed_height = true; label = "尺寸";
  12.               :row
  13.               {spacer_0;
  14.                 :edit_box {label = "长度"; key = "fwcd"; fixed_width = true;} spacer_0;
  15.                 :edit_box {label = "宽度"; key = "fwkd"; fixed_width = true;} spacer_0;
  16.                 :edit_box {label = "墙厚"; key = "fwqh"; fixed_width = true;} spacer_0;
  17.               }
  18.               :row{spacer_1;}
  19.             }"


  20.           ":row{
  21.           :boxed_column
  22.             {fixed_height = true; label = "门洞位置";
  23.               :row{
  24.                   spacer_1;
  25.                   :radio_button {key = "z1"; label = "顶部向右";} :radio_button {key = "z2"; label = "顶部向左";}
  26.                 }
  27.               :row{spacer_1;}
  28.             }


  29.           :boxed_column
  30.             {fixed_height = true; label = "门洞参数";
  31.               :row{
  32.                   spacer_0;:edit_box {label = "门宽"; key = "fmpy"; fixed_width = true;}spacer_0;
  33.                 }
  34.               :row{
  35.                   spacer_0;:edit_box {label = "偏移"; key = "pyjl"; fixed_width = true;}spacer_0;
  36.                 }
  37.               :row{spacer_1;}
  38.             }
  39.             }"

  40.           ":spacer {}
  41.             :row{
  42.               spacer_1; spacer_1; :button {key = \accept\;  is_default = true;   fixed_width = true; label = "确定";}
  43.                         :button {key = "cancel";   is_cancel = true;   fixed_width = true; label = "取消";} spacer_1; spacer_1;
  44.               }
  45.             :spacer {}
  46.         }"
  47.       )
  48.     )
  49.     (setq file (vl-filename-mktemp "DclTemp.dcl") )
  50.     (setq f (open file "w") )
  51.     (foreach str lst_str
  52.       (princ "\n" f)
  53.       (princ str f)
  54.     )
  55.     (close f)
  56.     file
  57.   )

  58.   (if (/= 'str (type fwcd) ) (setq fwcd "10000") )
  59.   (if (/= 'str (type fwkd) ) (setq fwkd "6000") )
  60.   (if (/= 'str (type fwqh) ) (setq fwqh "280") )
  61.   (if (/= 'str (type fmpy) ) (setq fmpy "800") )
  62.   (if (/= 'str (type pyjl) ) (setq pyjl "400") )
  63.   (defun getdata ()
  64.     (setq
  65.       cd (atoi (get_tile "fwcd") )
  66.       kd (atoi (get_tile "fwkd") )
  67.       qh (atoi (get_tile "fwqh") )
  68.       mk (atoi (get_tile "fmpy") )
  69.       jl (atoi (get_tile "pyjl") )
  70.       fwcd (get_tile "fwcd")
  71.       fwkd (get_tile "fwkd")
  72.       fwqh (get_tile "fwqh")
  73.       fmpy (get_tile "fmpy")
  74.       pyjl (get_tile "pyjl")
  75.     )
  76.   )
  77.   (if (= (setq dcl_id (load_dialog (setq dcl_file (make_dcl) ) ) ) 0) (progn (alert "\n无法显示对话框!") (exit) ) )
  78.   (if dcl_file (vl-file-delete dcl_file) )
  79.     (if (not (new_dialog "pmbj" dcl_id) ) (progn (alert "\n无法显示对话框!") (exit) ) )
  80.   (set_tile "fwcd" fwcd)
  81.   (set_tile "fwkd" fwkd)
  82.   (set_tile "fwqh" fwqh)
  83.   (set_tile "fmpy" fmpy)
  84.   (set_tile "pyjl" pyjl)
  85.   
  86.   (action_tile "z1" "(setq fmwz 1)" )
  87.   (action_tile "z2" "(setq fmwz 2)" )

  88.   (action_tile "accept" "(getdata) (done_dialog 1)")
  89.   (action_tile "cancel" "(getdata) (done_dialog 0) (exit)")
  90.   (start_dialog)
  91.     (unload_dialog dcl_id)
  92.   
  93.   (setq
  94.     pw0 (getpoint "\n插入点: ")
  95.     wx1 (+ (car pw0) (+ (* 2 qh) cd) )
  96.     wy1 (cadr pw0)
  97.     wx2 (+ (car pw0) (+ (* 2 qh) cd) )
  98.     wy2 (+ (cadr pw0) (+ (* 2 qh) kd) )
  99.     wx3 (car pw0)
  100.     wy3 (+ (cadr pw0) (+ (* 2 qh) kd) )

  101.     nx0 (+ (car pw0) qh)
  102.     ny0 (+ (cadr pw0) qh)
  103.     nx1 (+ (+ (car pw0) qh) cd)
  104.     ny1 (+ (cadr pw0) qh)
  105.     nx2 (+ (+ (car pw0) qh) cd)
  106.     ny2 (+ (+ (cadr pw0) qh) kd)
  107.     nx3 (+ (car pw0) qh)
  108.     ny3 (+ (+ (cadr pw0) qh) kd)

  109.     pw1 (list wx1 wy1)
  110.     pw2 (list wx2 wy2)
  111.     pw3 (list wx3 wy3)
  112.     pn0 (list nx0 ny0)
  113.     pn1 (list nx1 ny1)
  114.     pn2 (list nx2 ny2)
  115.     pn3 (list nx3 ny3)
  116.   )

  117.   (command "pline" pw0 pw1 pw2 pw3 pw0 "")
  118.   (command "pline" pn0 pn1 pn2 pn3 pn0 "")
  119.   
  120.   (defun mkwz ()
  121.     (setq snap (getvar "osmode") ) (setvar "osmode" 0)
  122.     (cond
  123.       ( (= fmwz 1) (mkwz1) )
  124.       ( (= fmwz 2) (mkwz2) )
  125.     )
  126.     (setvar "osmode" snap)
  127.   )
  128.   (mkwz)
  129.   (setvar "osmode" snap)
  130.     (setvar "cmdecho" 1)
  131.     (setvar "clayer" old_lay)
  132.     (command ".UNDO" "E")
  133. (princ)
  134. )

  135.   
  136.   (defun mkwz1 ()
  137.     (setq
  138.       p1 (polar pn3 (angle pn3 pn2) jl)
  139.       p2 (polar p1 (angle pn0 pn3) qh)
  140.       p3 (polar p1 (angle pn3 pn2) mk)
  141.       p4 (polar p3 (angle pn0 pn3) qh)
  142.       p5 (polar p1 (angle pn3 pn2) (/ mk 2) )
  143.       p6 (polar p2 (angle pn3 pn2) (/ mk 2) )
  144.     )
  145.     (command "pline" p1 p2 "")
  146.     (command "pline" p3 p4 "")
  147.     (command "_.TRIM" "" "c" p5 p6 "")
  148.   )

  149.   (defun mkwz2 ()
  150.     (setq
  151.       p1 (polar pn2 (angle pn2 pn3) jl)
  152.       p2 (polar p1 (angle pn0 pn3) qh)
  153.       p3 (polar p1 (angle pn2 pn3) mk)
  154.       p4 (polar p3 (angle pn0 pn3) qh)
  155.       p5 (polar p1 (angle pn2 pn3) (/ mk 2) )
  156.       p6 (polar p2 (angle pn2 pn3) (/ mk 2) )
  157.     )
  158.     (command "pline" p1 p2 "")
  159.     (command "pline" p3 p4 "")
  160.     (command "_.TRIM" "" "c" p5 p6 "")
  161.   )
问题一:以上代码,选择“顶部向右”后不会生成预设的两条线,并打断成缺口(如图左边),选择“顶部向左”的话都是第一次生成不带打断的图(如图中间),第二次使用才会正常打断生成缺口(如图右边),请问问题出在哪里?



问题二:CAD2020原来输入"TR"无需点空格即可修剪,为何突然需要按一次空格才能修剪了?请问如何解决?以上代码是不是和这个变动有关?谢谢~

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 4 天前 来自手机 | 显示全部楼层
本帖最后由 ssyfeng 于 2024-12-15 09:59 编辑

试试这样行不行

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
本帖最后由 逗亦斗霸 于 2024-12-15 15:21 编辑

感谢回复!正是我想要的,开始不清楚(vl-cmdf "_.zoom" "o" en1 "")和(vla-ZoomPrevious (vlax-get-acad-object) )的作用,后来想明白了。另外想请教一下,这些代码的顺序有什么讲究吗?感觉和我原来的有些差异啊,还有局部变量一定要加上去吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-19 06:48 , Processed in 0.178849 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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