Community
오토캐드 AutoCAD - 한국어
프로그램에 관한 사용 방법, 기술, 정보 등을 검색하고, 질문을 통해 서로 도움을 주고 받을 수 있습니다.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2개 이상의 선이 만나는 곳에 원을 그려 넣어야 합니다. 매크로 등으로 해결할 수있을까요?

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
hjyu4TM8S
302 Views, 2 Replies

2개 이상의 선이 만나는 곳에 원을 그려 넣어야 합니다. 매크로 등으로 해결할 수있을까요?

일일히 손으로 하다가 너무 힘들어서 혹시 더 좋은 방법이 있을지 여쭙습니다.

 

모든 모서리에 뽀족하지 않게 다듬는 작업을 해야해서 저런 표시를 넣습니다. 

 

예시 사진 한개 같이 올립니다.

 

hjyu4TM8S_0-1718942759818.png

 

2 REPLIES 2
Message 2 of 3
haaaak
in reply to: hjyu4TM8S

아래 링크의 리습으로 해결이 되는 것으로 보입니다.
https://www.cadtutor.net/forum/topic/25037-drawing-circles-to-all-vertices-of-polyline/?do=findComme...
Message 3 of 3
exceeds
in reply to: hjyu4TM8S

1. 리습을 이용한 방법

2024-06-21 14;24;15.gif

 

(defun c:EDGECIRCLE ( / ss ssl i ptlist ent entl sp ep ptlist cptlist 1list ptcount pt1 edgecircle circlesize)
  (vl-load-com)
  (princ "\n Select Lines to mark up edge : ")
  (if (setq ss (ssget '((0 . "LINE"))))
    (progn
      (setq ssl (sslength ss))
      (if (setq circlesize (getreal "\n Input Circle Size : "))
        (setq circlesize (abs circlesize))
        (setq circlesize 2)
      )
      (setq i 0)
      (setq ptlist '())
      (repeat ssl
        (setq ent (ssname ss i))      
        (setq entl (entget ent))
        (setq sp (cdr (assoc 10 entl)))
        (setq ep (cdr (assoc 11 entl)))
        (setq ptlist (append ptlist (list sp ep)))
        (setq i (+ i 1))
      )
      (setq cptlist (LM:CountItems ptlist))
      (repeat (length cptlist)
        (setq 1list (car cptlist))
        ;(princ "\n 1list - ")
        ;(princ 1list)
        (setq ptcount (cdr 1list))
        ;(princ "\n ptcount - ")
        ;(princ ptcount)
        (if (> ptcount 1)
          (progn
            (setq pt1 (car (car cptlist)))
            (setq edgecircle 
              (entmakex (list (cons 0 "CIRCLE")
                              (cons 10 pt1)
                              (cons 40 circlesize)
                        )
              )
            )
          )
          (progn)
        )
        (setq cptlist (cdr cptlist))
      )
    )
    (progn) 
  )
  (princ)
)

;; Count Items  -  Lee Mac
;; Returns a list of dotted pairs detailing the number of
;; occurrences of each item in a supplied list.

(defun LM:CountItems ( l / c x )
    (if (setq x (car l))
        (progn
            (setq c (length l)
                  l (vl-remove x (cdr l))
            )
            (cons (cons x (- c (length l))) (LM:CountItems l))
        )
    )
)

 

 
2. DATAEXTRACTION을 사용하는 방법
LT가 요즘은 일부 lisp을 쓸 수 있다던데, 어느정도까지 되는지 모르겠어서 일단..
DATAEXTRACTION 실행 > 새 데이터 추출 작성 > dxe 파일명 아무거나 > 다음 > 선만 선택하고 다음 >
2024-06-21 14;45;04.PNG
다음 > 외부 파일로 데이터 출력 > xls 선택 후 이름 아무거나 하고 열기
 
선 1개마다 시작점, 끝점 해서 1행으로 나오는데,
끝점 부분을 시작점의 맨 마지막에 붙여넣어서 1열로 포인트 리스트를 만들어주고
2024-06-21 14;29;20.PNG
&로 묶어서 좌표 형식으로 이어주고, 
COUNTIF로 중복하는 포인트가 몇개인지 보고
"CIRCLE" 명령어를 일렬로 써주고
필터로 포인트 2개 이상을 골라준 다음에
2024-06-21 14;49;55.PNG
 
CIRCLE 명령어 써놓은 부분을 복사해서 캐드의 명령어 프롬프트에 붙여넣으면 이렇게 됩니다.
2024-06-21 14;39;29.gif
 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums