사각형(정사각형이 아닙니다)을 선택하면 양 모서리에 딱 맞게 X그려지는 리습을 구할 수 있을까요.
컨텐츠 정보
- 454 조회
- 4 댓글
- 0 추천
- 0 비추천
-
목록
본문
정사각형이 아닌 기울기가 있는 도곽파일(네점을 가진 사각형이지만 정,직사각형이 아닙니다)을 다중선택하여
각각의 도곽안에 X표시를 한번에 하는 리습 구할 수 있을까요 ㅠㅠ
부탁드립니다.
관련자료
트리플렌지님의 댓글
(defun c:aaa ( / os ss ssno smember pt1 pt2 pt3 pt4)
(defun *error* (msg) (setvar "osmode" os) (princ) )
(setq os (getvar "osmode"))
(princ "n사각형을 선택하세요.") (setq ss (ssget '((0 . "LWPOLYLINE")))) (if (= ss nil) (progn (alert "사각형이 선택되지 않았습니다.") (exit) ))
(setq ssno 0) (repeat (sslength ss) (setq smember (ssname ss ssno)) (setq ssno (1+ ssno)) (Bndchk smember) (setvar "osmode" 0) (command "line" llp urp "") (command "line" (polar llp (dtr 90) (- (cadr urp) (cadr llp)) ) (polar urp (dtr 270) (- (cadr urp) (cadr llp)) ) "") (setvar "osmode" os) );repeat )
(vl-load-com) (defun Bndchk (blkent / entname vlentname minpoint maxpoint lowleftpoint lowleftpointx lowleftpointy lowleftpointxlist lowleftpointylist uprightpoint uprightpointx uprightpointy uprightpointxlist uprightpointylist sspt sgap sgap2 pt1 pt2 ) ;min max ) (defun *error* (msg) (princ) )
(setq entname blkent) (setq vlentname (vlax-ename->vla-object entname)) (vla-getboundingbox vlentname 'minpoint 'maxpoint) (setq lowleftpoint (vlax-safearray->list minpoint)) (setq lowleftpointx (car lowleftpoint)) (setq lowleftpointxlist (cons lowleftpointx lowleftpointxlist)) (setq lowleftpointy (cadr lowleftpoint)) (setq lowleftpointylist (cons lowleftpointy lowleftpointylist)) (setq uprightpoint (vlax-safearray->list maxpoint)) (setq uprightpointx (car uprightpoint)) (setq uprightpointxlist (cons uprightpointx uprightpointxlist)) (setq uprightpointy (cadr uprightpoint)) (setq uprightpointylist (cons uprightpointy uprightpointylist))
(setq lowleftpointxlist (vl-sort lowleftpointxlist '<)) (setq lowleftpointylist (vl-sort lowleftpointylist ')) (setq uprightpointylist (vl-sort uprightpointylist '>)) (setq llp (list (nth 0 lowleftpointxlist) (nth 0 lowleftpointylist))) (setq urp (list (nth 0 uprightpointxlist) (nth 0 uprightpointylist))) ) (defun rtd (a)(/ (* a 180.0) pi)) (defun dtr(a)(* pi(/ a 180.0)))