在选定的直线中点上插入指定的块出错了,请老师指点
我需要在图中选定一条直线,查看了前辈的资料,勉强编写了如下代码:其中TYC 是网上找的。XDK是我做的,问题是出错,不知道原因,请指点迷津
(defun c:tyc ()
(setvar "cmdecho" 0)
(command "line" pause pause "") ;你要的线可见
(setq newe (entlast))
(setq en (entget newe))
(setq p1 (cdr (assoc 10 en))) ;起点位置
(setq p2 (cdr (assoc 11 en))) ;端点位置
(setq a (angle p1 p2)) ;旋转
(setq a1 (* a (/ 180 pi)))
(command "-insert" "管网标记" p2 "" "" a1) ;块插入起点位置
(command "-insert" "管网标记" p1 "" "" a1) ;块插入端点位置
(princ)
)
(defun c:xdk ()
(setvar "cmdecho" 0)
;;;(setq os (getvar "osmode"))
;;;(setvar "osmode" 0)
(setq ent (car (entsel "\n选取线: ")))
(setq en (entget ent))
(setq pt10 (cdr (assoc 10 en)))
(setq pt11 (cdr (assoc 11 en)))
(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
(setq a (angle pt10 pt11)) ;旋转
(setq al (* a (/ 180 pi)))
(command "-insert" "管网标记" midpt "" "" al) ;块插入起点位置
;;;(command "-insert" "管网标记" p1 "" "" al) ;块插入端点位置
(princ)
)
;;164.13 [功能] 曲线中点
;;示例 (HH:GetMidpointCurve (car (entsel)))
(defun HH:GetMidpointCurve (curve / d)
(setq d (/ (vlax-curve-getDistAtParam
curve
(vlax-curve-getEndParam curve)
)
2
)
)
(vlax-curve-getPointAtDist curve d)
)
;;;返回直线段的中点
;;;用法: (ptmid 直线段图元)
(defun ptmid (Xent)
(setq dxf (entget Xent)
p10 (cdr (assco 10 dxf))
p11 (cdr (assoc 11 dxf))
mid (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11))
)
)
昨天忘了上传块文件,现在补上。请高手指点
管网标记可以实现在中点插入并随直线方向旋转,但是管线标记就只能在中点插入,无法实现随直线方向旋转。
(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
改成(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ pt10 pt11))) bssurvey 发表于 2018-3-23 09:01
(setq midpt (mapcar '* '(0.5 0.5 0.5) (mapcar '+ p10 p11)))
改成(setq midpt (mapcar '* '(0.5 0.5 0 ...
呵呵,我太粗心大意了
页:
[1]