cyxzime 发表于 2006-6-26 19:26:00

[求助]类似的零件如何自动标注

<P>类似的零件如何自动标注,编了一小部分,没办法了.望大家帮忙解决一下.</P>
<P>(defun c:ttt ()<BR>&nbsp; (setq p0 (getpoint "\please select dim base point"))<BR>&nbsp; (setq&nbsp;pt1 (polar p0 (/ pi 4) 1)<BR>&nbsp;pt2 (polar p0 (* pi 1.25) 1)<BR>&nbsp; )<BR>&nbsp; (setq ss1 (ssget "c" pt1 pt2))<BR>&nbsp; (setq i 0)<BR>&nbsp; (repeat 2</P>
<P>&nbsp;&nbsp;&nbsp; (setq pts (cdr (assoc 10 (entget (ssname ss1 i))))<BR>&nbsp;&nbsp; pte (cdr (assoc 11 (entget (ssname ss1 i))))<BR>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (if&nbsp;(= (car pts) (car pte))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt (polar p0 pi 15))<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq pt (polar p0 (* 1.5 pi) 15))</P>
<P>&nbsp;&nbsp;&nbsp; )<BR>&nbsp;&nbsp;&nbsp; (command "dimlinear" pts pte pt)<BR>&nbsp;&nbsp;&nbsp; (setq i (1+ i))<BR>&nbsp; )<BR>&nbsp; (princ)<BR>)</P>

cyxzime 发表于 2006-6-27 10:33:00

我现在有一条思路:得到图形的顶点坐标,组成表,然后取其中的一点做为基点,其余各点顺时针排序,然后DIMLINEAR.现在的问题是如何顺时针排序?

ZZXXQQ 发表于 2006-6-27 11:41:00

<P>1、将图线编辑成PLINE线;</P>
<P>2、取得这条线的顶点坐标(其本身就是有序的,不管是顺时针还是逆时针)进行标注。</P>

cyxzime 发表于 2006-6-27 11:59:00

<P>新手上路,很多东西不是很能领会.</P>
<P>1.如何将图线编辑成PLINE线?</P>
<P>2.如果图元要顺时针或逆时针排序,应该怎样做?</P>

ZZXXQQ 发表于 2006-6-27 13:38:00

<P>1、用PEDIT命令;</P>
<P>2、在取得顶点坐标后,计算出顶点坐标的中间点,再计算出中间点与各顶点的角度,对角度进行排序。角度从小到大是逆时针,反之是顺时针。</P>

cyxzime 发表于 2006-6-27 16:41:00

<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>

ZZXXQQ 发表于 2006-6-28 15:01:00


(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]
查看完整版本: [求助]类似的零件如何自动标注