[求助]类似的零件如何自动标注
<P>类似的零件如何自动标注,编了一小部分,没办法了.望大家帮忙解决一下.</P><P>(defun c:ttt ()<BR> (setq p0 (getpoint "\please select dim base point"))<BR> (setq pt1 (polar p0 (/ pi 4) 1)<BR> pt2 (polar p0 (* pi 1.25) 1)<BR> )<BR> (setq ss1 (ssget "c" pt1 pt2))<BR> (setq i 0)<BR> (repeat 2</P>
<P> (setq pts (cdr (assoc 10 (entget (ssname ss1 i))))<BR> pte (cdr (assoc 11 (entget (ssname ss1 i))))<BR> )<BR> (if (= (car pts) (car pte))<BR> (setq pt (polar p0 pi 15))<BR> (setq pt (polar p0 (* 1.5 pi) 15))</P>
<P> )<BR> (command "dimlinear" pts pte pt)<BR> (setq i (1+ i))<BR> )<BR> (princ)<BR>)</P> 我现在有一条思路:得到图形的顶点坐标,组成表,然后取其中的一点做为基点,其余各点顺时针排序,然后DIMLINEAR.现在的问题是如何顺时针排序? <P>1、将图线编辑成PLINE线;</P>
<P>2、取得这条线的顶点坐标(其本身就是有序的,不管是顺时针还是逆时针)进行标注。</P> <P>新手上路,很多东西不是很能领会.</P>
<P>1.如何将图线编辑成PLINE线?</P>
<P>2.如果图元要顺时针或逆时针排序,应该怎样做?</P> <P>1、用PEDIT命令;</P>
<P>2、在取得顶点坐标后,计算出顶点坐标的中间点,再计算出中间点与各顶点的角度,对角度进行排序。角度从小到大是逆时针,反之是顺时针。</P> <P>谢谢ZZXXQQ的热心解答,现在又有新问题了.将图线编辑成PLINE线后,取出顶点坐标,但返回的点列表中的第一个点好象不定?(我指的是类似的图形编辑成PLINE线后,再用以下程序.)</P>
<P>(defun c:ttt ()<BR>(vl-load-com)<BR>(setq obj (car (entsel "\nSelect a Polyline: ")))<BR>(MASSOC 10 (entget obj))<BR>)<BR>(defun massoc (key alist / x nlist)<BR>(foreach x alist<BR>(if (eq key (car x))<BR>(setq nlist (cons (cdr x) nlist))<BR>)<BR>)<BR>(reverse nlist)<BR>) </P>
<P>-----人家的程序借用.</P>
<P>我希望能指定一点,然后返回的点列表以它为起始点.</P>
(defun c:ttt ()
(setq obj (entsel "\nSelect a Polyline: "))
(setq ent (entget (car obj)))
(if (= (cdr (assoc 0 ent)) "LWPOLYLINE") (PROGN
(SETQ ENL (MASSOC 10 ENT))
(SETQ N 0 PT (OSNAP (CADR OBJ) "ENDPOINT") J nil)
(REPEAT (LENGTH ENL)
(IF (EQUAL (DISTANCE PT (NTH N ENL)) 0.0 1E-4) (SETQ J (NTH N ENL)))
(SETQ N (1+ N))
)
(IF J (SETQ ENL (APPEND (MEMBER J ENL) (REVERSE (CDR (MEMBER J (REVERSE ENL)))))))
))
)
页:
[1]