프로그램
캐드 분류

리습수정요청 다시 올립니다

컨텐츠 정보

본문

첨부파일이 안올라온다고해서 다시 올립니다

가시설도면작성시 벽체를 그려주는 리습인데요

선을따라 클릭하면 입력한 직경의 원을 그려주고 중간중간에 H파일블럭을 삽입해줍니다

그런데 여기서 원을 circle로 그려주는 대신에 H파일처럼 블럭으로 그려주도록 수정할수 있을까요?

왜냐하면 원주변에 다른 기호들을 붙여줘야 할경우가 있어서 블럭내에서 수정해서 사용하려고 합니다




(defun c:xxx()
 (setq osm (getvar "osmode"))
 (setq num0 (getreal "벽체 종류를 입력하세요 1->CIP // 2->SCW : n"))
 (setq num1 (getreal "CIP or SCW의 직경을 입력하세요 : n"))
 (setq ctc1 (/ num1 2))
 (setq num2 (getreal "CIP or SCW의 C.T.C를 입력하세요 : n"))
 (setq num3 (getreal "파일 종류를 입력하세요 1->300X300 // 2->298X201 : n"))
 (setq num4 (getreal "파일 C.T.C를 입력하세요 : n"))
 (setq p1(getpoint "시작점 : n")) ;벽체시작점
 (setq p3 p1) ;파일시작점


 (while (< num 1)
 (setq p2(getpoint "다음점 : n"))
 (setq dis(distance p1 p2)) ;벽체간격
 (setq dis2(distance p3 p2)) ;파일간격
 (setq dis_1(- dis num2))
 (setq dis_2(- dis num4));시작점에서 겹치는걸 방지하기 위해 한칸 떨어져서 시작하기 때문에 거리도 한칸 떨어진 거리로 시작한다.
 
 (setq ang (angle p1 p2)) ;점 사이의 각도
 (setq p_1 (polar p1 ang num2)) ;벽체 삽입점
 (setq p_2 (polar p3 ang num4)) ;파일 삽입점 겹침 방지를 위해 한칸 떨어져 시작한다.
 (setq pp (polar p3 ang 1))
   (while (> dis_1 0)
     (setvar "osmode" 0) ;오스냅 해제
     (if(= num3 1)
       (setq block "측면-300″)
       (if(= num3 2)
  (setq block "측면-200″)
       ) 
     ) ;end if // 파일 블록 지정
     (progn
      (if(= num0 1)
  (command "-layer" "s" "00-CIP" "")
   (if(= num0 2)
     (command "-layer" "s" "00-SCW" "")
  )
       );end if // 벽체 레이어 지정
     )
     (command "circle" p_1 ctc1) ;벽체 삽입
    
     (if (= dis_1 dis_2)
     (progn      
         (if(= num3 1)
           (command "-layer" "s" "00-wall" "")
             (if(= num3 2)
               (command "-layer" "s" "00-wall" "")
             )
  ); end if // 파일 레이어 지정
      


     (command "-insert" block p_2 "1″ "1″ pp) ;파일 삽입
     (setq p5 (polar p_2 ang num4))
     (setq p_2 p5)
     (setq dis_2 (- dis_2 num4))
     );반복을 위한 시작점과 거리 변경
     );end if // 벽체와 파일이 서로 ctc가 다르기때문에 벽체와 파일의 남은거리가 같을때만 파일 삽입
     (setq p4 (polar p_1 ang num2))
     (setq p_1 p4)
     (setq dis_1 (- dis_1 num2)) ;반복을 위한 시작점과 거리 변경
     (setvar "osmode" osm);오스냅 복구
   )
   (progn
     (if(= num0 1)
  (command "-layer" "s" "00-CIP" "")
  (if(= num0 2)
    (command "-layer" "s" "00-SCW" "")
    )
      )
   )
   (command "circle" p2 ctc1)
   (progn
     (if(= num3 1)
  (command "-layer" "s" "00-wall" "")
  (if(= num3 2)
    (command "-layer" "s" "00-wall" "")
    )
      )
   )
   (command "-insert" block p2 "1″ "1″ p2)
   (setq p1 p2)
   (setq p3 p2);마지막점에 삽입
 
 )
 
)


 

관련자료

댓글 4 / 1 페이지

수야12님의 댓글

본문에 삽입하시면 됩니다  요런식으로 (다운받을때는 본문글을 클릭하세요)

고캐드 관리자가 없는 것인지 관리가 제대로 안되네요 

나다나엘님의 댓글

벽체 종류를 입력하세요 1->CIP // 2->SCW : 1 CIP or SCW의 직경을 입력하세요 : 500 CIP or SCW의 C.T.C를 입력하세요 : 500 파일 종류를 입력하세요 1->300X300 // 2->298X201 : 1 파일 C.T.C를 입력하세요 : 1500 시작점 : 다음점 : -layer 현재 도면층:  "00-CIP" 옵션 입력 [?/만들기(M)/설정(S)/신규(N)/켜기(ON)/끄기(OFF)/색상(C)/선종류(L)/선가중치(LW)/재료(M)/플롯(P)/동결(F)/동결해 제(T)/잠금(LO)/잠금해제(U)/상태(A)]: s 현재로 만들 도면층 이름을 입력하거나 <객체를 선택>하십시오. 00-CIP 옵션 입력 [?/만들기(M)/설정(S)/신규(N)/켜기(ON)/끄기(OFF)/색상(C)/선종류(L)/선가중치(LW)/재료(M)/플롯(P)/동결(F)/동결해 제(T)/잠금(LO)/잠금해제(U)/상태(A)]: 명령: -insert 블록 이름 입력 또는 [?] <1>: 이곳에 블럭이름 넣으세요 "이곳에 블럭이름 넣으세요.dwg": 검색 경로에서 파일을 찾을 수 없습니다.   C:Program Files (x86)AutoCAD 2007 (현재 디렉토리)    C:UsersuserAppDataRoamingAutodeskAutoCAD 2007R17.0korsupport   C:Program Files (x86)AutoCAD 2007support   C:Program Files (x86)AutoCAD 2007fonts   C:Program Files (x86)AutoCAD 2007help   C:Program Files (x86)AutoCAD 2007supportcolor   C:Program Files (x86)Dream   C:Program Files (x86)AutoCAD 2007drv *유효하지 않음*

유효하지 않는다는 오류가 뜨네요

수야12님의 댓글

아이공 "이곳에 블럭이름을 넣으세요"에 사용하실 원형 블럭 이름을 넣으셔야죠  그걸 그대로 사용하시다니 

emoticon 제가 님이 사용할 원형 블럭이름을 어찌 알고 입력해 놓겠습니까??

나다나엘님의 댓글

블럭명을 만들어서 폴더에 넣어놓고 리습을 실행하면

파일 C.T.C를 입력하세요 : 1500 시작점 : 다음점 :

여기서 다음점을 클릭하면 블럭명입력 명령어도 안뜨고 유효하지 않음까지 한번에 나오면서 끝나버리네요… 좀더 연구를 해봐야겠네요…

전체 61 / 1 페이지
번호
제목
이름
알림 0