明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1257|回复: 3

【求助】entmake 怎么使用变量?

[复制链接]
发表于 2010-12-6 15:36:16 | 显示全部楼层 |阅读模式
  (entmake (list
             '(0 . "TEXT")
             '(100 . "AcDbEntity")
             (cons 8 (getvar "CLAYER"))
             '(100 . "AcDbText")
             '(10  x y 0.0)
             (cons 40 text_height)
             (cons 1 name_out)
             '(50 . 0.0)
             '(41 . 1.0)
             '(51 . 0.0)
             (cons 7 (getvar "TEXTSTYLE"))
             '(71 . 0)
             '(72 . 0)
             '(11 0.0 0.0 0.0)
             '(210 0.0 0.0 1.0)
             '(100 . "AcDbText")
             '(73 . 0)
             ) ;list
           ) ;entmake


我想把里面的坐标 '(10  x y 0.0)用变量来实现,可是程序都出错。。。
不能用变量吗?

 楼主| 发表于 2010-12-6 15:40:48 | 显示全部楼层
原始程序是下面的,但command text输出来的字符串内容都变成了0,不知道为什么
监测变量,在command text前一句,所有变量值都正常,但经command text输出就变
成了0.   而且奇怪的是,偶尔输出又正常的。
不知道原因。
所以想用entmake来输出字符串。

以下是建筑中经常用到的门窗个数统计的源代码:

(defun c:smc(/ all_text_content all_text_height num_list
             ss p n i ss_name ent_list ent_type ent_content
             i print_list x_base y_base np1 x y x2 np2
             name_out num_out text_name num_name tstyle)
  (SETQ tstyle(getvar "TEXTSTYLE"))
  (setvar "TEXTSTYLE" "HZTXT")
  (setq all_text_content())
  (setq all_text_height())
  (setq num_list())
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)          
  (princ "\n 请选择门窗文字")
  (setq ss(ssget))
  (princ "\n 请选择门窗表打印位置")
  (setq p(getpoint ))
  ;_______________________________________________________
  (setq n(sslength ss))
  (setq i 0)
  (repeat n
    (setq ss_name(ssname ss i))
    (setq ent_list(entget ss_name))   
    (setq ent_type(cdr(assoc 0 ent_list)))   
    (if(= ent_type "TEXT")
      (progn
        (setq ent_content(cdr(assoc 1 ent_list)))
        (setq text_height(cdr(assoc 40 ent_list)))  
        (setq all_text_content(append all_text_content (list ent_content)))
      );end progn
    );end if
     (setq i(+ i 1))
   );end repeat
;_______________________________________________________
  (setq i 0)
  (setq print_list(del-b all_text_content));清除重复图元,获得不同的图元名  
  (setq n(length print_list))
    (repeat n
    (setq name_out(nth i print_list));选出一个内容名用于比较
      ;###############################
      (setq j 0)
      (setq nn(length all_text_content))
      (setq num 0)
      (repeat nn      
      (setq all_name_out(nth j all_text_content))
        (if(= name_out all_name_out)
          (setq num(+ num 1))
         );end if
      (setq j(+ j 1))
      );repeat
      (setq num_list(append num_list (list num)))
      ;###############################
    (setq i(+ i 1))
   );end repeat
;___打字_____________________________________________
  (setq text_space(+ text_height 200))
  (setq n(length print_list))
  (setq n_value(fix (/ 240 n)));选择其中的240种颜色
  (setq i 0)
  (setq x_base(car p))
  (setq y_base(cadr p));获得打印基准点
  (repeat n
    (setq x x_base)
    (setq y(- y_base (* text_space i)))
    (setq np1(list x y 0))
    (setq x2(+ x (* 8 text_height)))
    (setq np2(list x2 y 0))
    (setq name_out(nth i print_list))
    (setq num_out(nth i num_list))   
    (command "text" np1 text_height 0 name_out "" "")
    (setq text_name(entlast))
    (setq i_abc(itoa (+ (* n_value i) 1)))
    (COMMAND "CHPROP" text_name "" "C" i_abc "")
    (command "text" np2 text_height 0 num_out "" "")
    (setq num_name(entlast))
    (COMMAND "CHPROP" num_name "" "C" i_abc "")
    (setq i(+ i 1))
    );end repeat

  
;_______________________________________________________
    (setvar "TEXTSTYLE" tstyle)
);end defun


;****************清除重复图元名函数_start*****************************
(defun del-b (lst / lst_new lst_en)
(while lst
(setq lst_en (nth 0 lst)
      lst_new (append lst_new (list lst_en))
      lst (vl-remove lst_en lst));会移除与lst_en重复的元素
);end while
lst_new
);end defun
;**********************************************************************
发表于 2010-12-7 10:28:19 | 显示全部楼层
你不是已經會用變量嗎,如(cons 40 text_height)
发表于 2011-2-1 15:16:23 | 显示全部楼层
哈哦资料啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 22:35 , Processed in 0.489088 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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