AutoLISP对话框设计查询图元个数

AutoLISP对话框设计查询图元个数,可查CIRCLE、LINE和TEXT的数量,DCL代码如下。

dia5d:dialog {
    label = "练习" ;
    :concatenation {
        :text_part {
            label = "共选到【" ;
        }
        :text {
            width = 6 ;
            key = "t_cir" ;
        }
        :text_part {
            label = "】个CIRCLE" ;
        }
    }
    :concatenation {
        :text_part {
            label = "共选到【" ;
        }
        :text {
            width = 6 ;
            key = "t_line" ;
        }
        :text_part {
            label = "】个LINE" ;
        }
    }
    :concatenation {
        :text_part {
            label = "共选到【" ;
        }
        :text {
            width = 6 ;
            key = "t_text" ;
        }
        :text_part {
            label = "】个TEXT" ;
        }
    }
    ok_cancel;
}

LSP代码如下。

(defun c:dia5d ()
    (setvar "cmdecho" 0)
    (sub_dia5d)
    (if    ss
    (dcl_dia5d)
    )
    (prin1)
)
(defun sub_dia5d ()
    (setq ss (ssget))
    (if    (null ss)
    (setq ss (ssadd))
    )
    (setq cir_num 0
      line_num 0
      text_num 0
    )
    (setq n 0)
    (repeat (sslength ss)
    (setq en (ssname ss n))
    (setq entype (cdr (assoc 0 (entget en))))
    (cond ((= entype "CIRCLE") (setq cir_num (1+ cir_num)))
          ((= entype "LINE") (setq line_num (1+ line_num)))
          ((= entype "TEXT") (setq text_num (1+ text_num)))
    )
    (setq n (1+ n))
    )
)
(defun dcl_dia5d ()
    (setq dcl_id (load_dialog "dia5d"))
    (if    (not (new_dialog "dia5d" dcl_id))
    (exit)
    )
    (set_tile "t_cir" (itoa cir_num))
    (set_tile "t_line" (itoa line_num))
    (set_tile "t_text" (itoa text_num))
    (setq dd (start_dialog))
)

代码完。

查询其它图元类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值