明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5262|回复: 16

源码 圆或图块添加符号 对话框编辑框记忆功能

  [复制链接]
发表于 2012-5-25 11:26:16 | 显示全部楼层 |阅读模式
本帖最后由 海洋闹饥荒 于 2012-5-28 23:11 编辑

程序可实现对圆或图块添加符号,并可自定位置。另外,对话框里面符号一项有记忆功能,算法在程序里,也一并奉上了。算是回馈明经了。
另外,还请各位看看我的这个帖子,提提看法。http://bbs.mjtd.com/thread-93729-1-1.html
dcl文件码会在一楼贴出,哪位大大觉得好的话,请给个币

  1. (defun c:ss(/ do_what  pt1 idcl_id aaa cds_jidian pick_point duixiang)
  2.   (setq idcl_id (load_dialog "check")
  3.   )
  4.   
  5.   (if (> idcl_id 0)
  6.     (progn (setq w1 "yuan")
  7.      (setq do_what 2 h 20 start_x 0 start_y 0 aaa 1)
  8.       (if (/= kkkkk nil) (setq w1 kkkkk))
  9.      (while (> do_what 1)
  10.      (if (new_dialog "circle_signal" idcl_id)
  11.         (progn
  12.               (set_tile "ww" w1)
  13.         (set_tile "hh" (rtos h 2 1))
  14.         (set_tile "xx" (rtos start_x 2 3))
  15.         (set_tile "yy" (rtos start_y 2 3))
  16.         
  17.         (action_tile "ww" "(cdsw)")
  18.         (action_tile "hh" "(cdsh)")
  19.               (action_tile "xx" "(cdsx)")
  20.               (action_tile "yy" "(cdsy)")
  21.          
  22.               (action_tile "pick_point" "(done_dialog 2)")
  23.               (action_tile "duixiang" "(done_dialog 3)")
  24.           (mode_tile "pick_point" aaa)
  25.         (action_tile "accept" "(done_dialog 1)")
  26.         (action_tile "cancel" "(done_dialog 0)")
  27.         (setq do_what (start_dialog))
  28.         (if (= do_what 3)
  29.         (progn (prompt "\n请选择要加标记的圆或图块")
  30.                      (setq yuan (ssname (ssget '((0 . "CIRCLE,insert"))) 0))
  31.            (setq aaa 0)
  32.            (setq cds_jidian (cdr (assoc 10 (entget yuan))))
  33.            ));;;;结束if(选择对象)
  34.         (if (= do_what 2)
  35.            (progn  
  36.             (initget 1)
  37.           (setq pt1 (getpoint "\n请选择文字插入点:"))
  38.           (setq start_x (- (car pt1) (car cds_jidian)) start_y (- (cadr pt1) (cadr cds_jidian)))
  39.           ));;;结束if(插入点)
  40.     ));;;;;结束外面的if
  41.     )  ;while
  42.    (if (= do_what 1)
  43.       (draw_cds)
  44.     )
  45.     );;;;结束第一个if的progn
  46.    (alert "不能载入对话框文件")
  47.    );;;结束if(> idcl_id 0)
  48.    (unload_dialog idcl_id)
  49.    );;;defun
  50. ;;==================================================================
  51. (defun cdsw()
  52. (setq w1 (get_tile "ww"))
  53.   (setq  kkkkk w1)
  54. )   
  55. (defun cdsh()
  56. (setq h (atof (get_tile "hh")))
  57. );将编辑框中的字符串转换成实型数,以便传给绘图程序
  58. (defun cdsx()
  59.   (setq start_x (atof (get_tile "xx")))
  60.   )
  61. (defun cdsy()
  62.   (setq start_y (atof (get_tile "yy")))
  63.   )
  64. ;;=================================================================
  65. (defun draw_cds (/ xzj neirong m i nr pt yc)
  66. (setq a (getvar "textstyle"))
  67.    (setvar "textstyle" "standard")
  68.   (prompt "\n请选择其他需要加标记的图元")
  69.   (setq xzj (ssget '((0 . "CIRCLE,insert"))))
  70.     (ssadd yuan xzj)
  71.   (setq neirong (entget yuan))
  72.   (setq m (cdr (assoc 0 neirong)))
  73.    
  74.   (setq i 0)
  75.   (repeat (sslength xzj)
  76.     (setq nr (entget (ssname xzj i)))
  77.    
  78.     (if (equal m "CIRCLE")
  79.       (progn (if (= (cdr (assoc 40 neirong)) (cdr (assoc 40 nr)))
  80.       (progn
  81.         (setq yc  (cdr (assoc 10 nr)))
  82.         (setq pt (list (+ (car yc) start_x) (+ (cadr yc) start_y ) 0.0))
  83.         (command "text" pt h 0 w1)
  84.             )));progn
  85.       (progn (if (equal (cdr (assoc 2 neirong)) (cdr (assoc 2 nr)))
  86.          (progn
  87.         (setq yc  (cdr (assoc 10 nr)))
  88.         (setq pt (list (+ (car yc) start_x) (+ (cadr yc) start_y ) 0.0))
  89.         (command "text" pt h 0 w1)
  90.             )))
  91.       );if

  92.     (setq i (+ i 1))
  93.   );repeat
  94.    (setvar "textstyle" a)
  95.   )


由于我自己的程序里已经对高度一项做了更改,这里就没做对比。

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
革天明 + 1 赞一个!

查看全部评分

发表于 2022-6-26 01:59:57 | 显示全部楼层
代码
错误: 输入的字符串有缺陷
 楼主| 发表于 2012-5-25 11:27:17 | 显示全部楼层
  1. circle_signal:dialog{
  2.                     label="圆加符号";
  3.                     :boxed_row{label="符号参数";
  4.                                :column{:edit_box{label="新符号";
  5.                                                  key="ww";
  6.                                                  edit_width=8;
  7.                                                  }
  8.                                        :edit_box{label="符号高度";
  9.                                                  key="hh";
  10.                                                  edit_width=8;}
  11.                                        }   //column
  12.                                 }   //boxed_row
  13.                      :boxed_row{label="符号插入点";
  14.                              :column{   :button{label="选择一个对象";
  15.                                                 key="duixiang";
  16.                                                 width=5;
  17.                                                 fixed_width=true;
  18.                                                 is_default=true;
  19.                                                 alignment=centered;}
  20.                                         :button{
  21.                                                 label="插入点<<";
  22.                                                 key="pick_point";
  23.                                                 width=5;
  24.                                                 fixed_width=true;
  25.                                                 is_default=true;
  26.                                                 alignment=centered;}
  27.                                         :edit_box{label="X相对坐标";
  28.                                                   key="xx";
  29.                                                   edit_width=8;}
  30.                                         :edit_box{label="Y相对坐标";
  31.                                                   key="yy";
  32.                                                   edit_width=8;}
  33.                                       } //column
  34.                                 }  //boxed_row
  35.                                 
  36.               
  37.               ok_cancel;
  38.                                 }
发表于 2012-5-27 21:14:50 | 显示全部楼层
给个演示图像,不知道怎么用呢
发表于 2012-5-27 22:21:00 | 显示全部楼层
楼主能不能放过图示看一下。。谢谢
 楼主| 发表于 2012-5-28 23:04:09 | 显示全部楼层
qq229918602 发表于 2012-5-27 22:21
楼主能不能放过图示看一下。。谢谢

上图了。。。。。。。。。。。。。
 楼主| 发表于 2012-5-28 23:05:52 | 显示全部楼层
tianyi1230 发表于 2012-5-27 21:14
给个演示图像,不知道怎么用呢

上图了,对同一半径的圆和相同的图块可添加符号,插入点根据第一个选择的图元指定
发表于 2012-6-1 18:55:59 来自手机 | 显示全部楼层
手机看不清。
 楼主| 发表于 2012-6-1 23:02:00 | 显示全部楼层
smartstar 发表于 2012-6-1 18:55
手机看不清。

发表于 2012-6-2 16:55:02 | 显示全部楼层
好程序,赞一个!
发表于 2012-9-24 23:36:39 | 显示全部楼层
多发好贴,造福人民!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 23:35 , Processed in 0.202646 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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