请问当我们选择一根线的时候 (setq aa (ssget '((0 . "LINE")))) 要知道他的长度 需要 得到10和11 再用(distance 10 11) 计算得到长度
那么请问的是 是否可以使用setq 只选择 长度为100的线
如:(setq aa (ssget '((0 . "LINE")(长度 . "100"))))
疑问:因为圆是直接可以选择半径的 那么线有直接的长度值吗? 上边的写法可以实现吗?
这么做是因为 图面都是由线组成的
现在的做法是 判断出100的线 找到中心点画一个圆 使用循环 但是速度会特别的慢
如果选择直接得到100的线 计算中心点会省略很多循环的算法 节约了时间
(100的线只是我举例 不要纠结100的线很常见的问题)
顺便问一个entmake创建的问题
当entmake创建块的时候 如果创建带有属性的数值
使用这个是没有属性那个数值的
- (defun c:tt( / del_ent ele ent i must new_ent)
- (setq ent (entget (car (entsel "\n選擇一個圖元")))) ;得到組碼
- (setq i 0 must '()) ;初始化
- (repeat (length ent)
- (setq del_ent (vl-remove (nth i ent) ent)) ;測試刪除
- (setq new_ent (entmake del_ent)) ;測試生成
- (if (= 10 (car (nth i ent)))
- (progn
- (setq must (append must (list (nth i ent))))
- (if new_ent
- (entdel (entlast))
- )
- )
- (if new_ent
- (entdel (entlast))
- (setq must (append must (list (nth i ent))))
- )
- )
- (setq i (1+ i))
- ) ;end repeat
- (cond
- ((= "LWPOLYLINE" (cdr (assoc 0 ent)))
- (setq must (append must (list (assoc 90 ent))))
- )
- ((= "SPLINE" (cdr (assoc 0 ent)))
- (setq must (append must (list (assoc 74 ent))))
- (foreach ele ent
- (if (= 11 (car ele))
- (setq must (append must (list ele)))
- )
- )
- )
- ((= "DIMENSION" (cdr (assoc 0 ent)))
- (foreach ele ent
- (if (or (= 11 (car ele))
- (= 21 (car ele))
- (= 31 (car ele))
- (= 70 (car ele))
- (= 71 (car ele))
- (= 1 (car ele))
- (= 3 (car ele))
- )
- (setq must (append must (list ele)))
- )
- )
- )
- )
- (print must)
- (princ)
- )
|