비밀번호를 잊으셨나요?

비밀번호를 잊으셨나요? 비밀번호를 재설정하려면 이메일 주소를 입력해주세요.

계정이 있나요? 로그인

You must login to ask a question.

비밀번호를 잊으셨나요?

아직 계정이 없으신가요? 회원가입 하기

해당 질문을 신고하는 이유를 간단히 입력해주세요.

해당 답변을 신고하는 이유를 간단히 입력해주세요.

해당 유저를 신고하는 이유를 간단히 입력해주세요.

로그인회원가입

고캐드 – 캐드(CAD) 정보의 중심

고캐드 – 캐드(CAD) 정보의 중심 Logo 고캐드 – 캐드(CAD) 정보의 중심 Logo

고캐드 – 캐드(CAD) 정보의 중심 Navigation

  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
검색
질문하기

Mobile menu

닫기
질문하기
  • 홈
  • 카테고리
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 투표
  • 커뮤니티 그룹
  • Q&A
    • AutoCAD & CADian
    • Inventor & Solidworks
    • Revit & ArchiCAD
    • 자유질문
    • 기타
  • 커뮤니티
    • 오늘의이슈
    • 자유게시판
    • 익명게시판
    • 건의게시판
  • 자료실
    • 자료요청
    • 일반파일
    • 도면샘플
    • 유틸리티
    • 기타
  • 작품 갤러리
    • 그래픽
    • 캐드도면
    • 3D모델
    • 기타
  • 뉴스&이벤트
    • 공지사항
    • 뉴스
    • 전시/행사
    • 이벤트
    • 기타
홈/ 질문/Q 112864
다음
진행 중
닐스몹
닐스몹Lv.1
등록일: 2021-02-042021-02-04T11:17:39+09:00 2021-02-04T11:17:39+09:00카테고리: AutoCAD & CADian

break 리습을 만드는 중인데 foreach 질문 드립니다..

(defun c:hh (/)
 (setvar “cmdecho” 0) (setq os (getvar “osmode”)) (sssetfirst) (setq hid (list (cons 62 4)(cons 6 “HIDDEN”)))
 (if (not (wcmatch (setq typ (cdr (assoc 0 (setq ent (entget (setq obj (car (entsel “n기준 객체를 선택하세요.: “)))))))) “ELLIPSE,*TEXT*”))
 (progn
  (prompt “n자를 객체를 선택하세요.: “)
  (setq objj (ssget) pt (getpoint “n자를 위치를 선택하세요. :”) r 0)
  (repeat (sslength objj)
   (setq typ (cdr (assoc 0 (entget (ssname objj r)))))
   (setq int (vlax-invoke (vlax-ename->vla-object obj) ‘IntersectWith (vlax-ename->vla-object (ssname objj r)) acExtendNone))
   (setq lst (cons (cons typ int) lst))
   (setq r (1+ r))
  )
   (foreach x lst (if (wcmatch (car x) “LINE”)
     (progn
      (setq entt (entget (ssname objj 0)))
      (setq p1 (cdr (assoc 10 entt)) p2 (cdr (assoc 11 entt)))
      (setq int (cdr (car lst)) intt (inters p1 p2 pt (polar pt (+ (/ pi 2) (angle p1 p2)) (car pt)) nil))
      (if (or (inters p1 p2 pt (polar pt (+ (/ pi 2) (angle p1 p2)) (car pt)))
       (inters p1 p2 pt (polar pt (- (angle p1 p2) (/ pi 2)) (car pt))))
      (progn
       (if (>= (angle p1 p2) pi)
       (progn
        (cond ((>= (angle int intt) pi)
         (entmake (subst (cons 11 int) (assoc 11 entt) entt))
         (entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
         (entmake (subst (cons 10 intt) (assoc 10 entt) entt)))
        )
        (cond ((< (angle int intt) pi)
         (entmake (subst (cons 11 intt) (assoc 11 entt) entt))
         (entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
         (entmake (subst (cons 10 int) (assoc 10 entt) entt)))
        )
       )
       (progn
        (cond ((>= (angle int intt) pi)
         (entmake (subst (cons 10 int) (assoc 10 entt) entt))
         (entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
         (entmake (subst (cons 11 intt) (assoc 11 entt) entt)))
        )
        (cond ((< (angle int intt) pi)
         (entmake (subst (cons 10 intt) (assoc 10 entt) entt))
         (entmake (append (subst (cons 10 int) (assoc 10 entt) (subst (cons 11 intt) (assoc 11 entt) entt)) hid))
         (entmake (subst (cons 11 int) (assoc 11 entt) entt)))
        )
       ))
      )
      (progn 
       (if (>= (angle p1 p2) pi)
       (progn
        (cond ((>= (angle int intt) pi)
         (entmake (subst (cons 11 int) (assoc 11 entt) entt))
         (entmake (append (subst (cons 10 int) (assoc 10 entt) entt) hid)))
        )
        (cond ((< (angle int intt) pi)
         (entmake (append (subst (cons 11 int) (assoc 11 entt) entt) hid))
         (entmake (subst (cons 10 int) (assoc 10 entt) entt)))
        )
       )
       (progn
        (cond ((>= (angle int intt) pi)
         (entmake (subst (cons 10 int) (assoc 10 entt) entt))
         (entmake (append (subst (cons 11 int) (assoc 11 entt) entt) hid)))
        )
        (cond ((< (angle int intt) pi)
         (entmake (append (subst (cons 10 int) (assoc 10 entt) entt) hid))
         (entmake (subst (cons 11 int) (assoc 11 entt) entt)))
        )
       ))
      ))
      (entdel (ssname objj 0))
     ))
   )
 ))
)
1. 기준 선을 선택
2. 자를 선을 선택
3. 자를 위치 선택
하면 선이 잘리게 되는데요.. 기준 선은 1개만 선택이 되고
자를 선은 아직 1개밖에 안되고 여러개 선택 할 때 에러가 뜨더라구요
여기서 lst에 모든 교차점에 다 저장이 되고 foreach 함수로 lst에 있는걸 순차적으로 하나씩 꺼내서 사용하는거 아닌가요? 혹시 repeat이 따로 또 들어가야 하나요??
그리고 중간에 굵게 표시해놓은 lst는 x로 하면 foreach가 안 먹는거 같은데 어떻게 해야 좋을까요ㄷㄷ
  • 0
  • 7 7 답변
  • 31 조회
공유
  • Facebook

    관련 있는 질문들

    • 오토캐드 2016 맞춤법 검사기 끄는 방법 아시나요
    • 캐드에서 여러도면을 한번에 배치출력 할 수 있는 방법이 있나요
    • step파일, iges 파일을 열어서 볼 수 있는 방법이 있을까요?
    • 캐디안으로 도면을 열때 한글이 ???로 표시되는 문제

    7 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 수야12 Lv.21
      2021-02-04T12:18:59+09:00답변 등록 답변 등록 일시 2021-02-04 12:18 pm

      교차점 리스트를 다른곳에 사용하실려구 그러시나요?? 

      그럴것 아니면 바로바로 사용 하셔도 될듯하네요 그러구 리스트에 cons문 사용하시면 결과가 반대로 저장됩니다 a에서f 까지 선택하면 결과는 f에서a로 저장되요   음 한가지 팁으 드리자면 코딩하실때 출력메세지를 넣으셔서 내가 의도한대로 잘 구성돼있나 가끔 출력을 해보세요 가령 리스트가 내의도대로 구성 돼있나 (cdr x)의 값이 내가 원한값인건가 확인을 해보셔야죠 ㅎㅎ 화이팅~!! 
      제 실수가 있어서 수정합니다 ㅋ~
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 닐스몹 Lv.1
      2021-02-04T12:53:00+09:00답변 등록 답변 등록 일시 2021-02-04 12:53 pm

      교차점을 이용해서 교차점에서 선택 지점까지 break 후 히든선으로 생성하는 리습 만들고 있습니다ㅠ

      (setq lst (cons (cons typ int) lst)) 에서 (typ는 “LINE” int는 교차점)
      캐드상에서 !lst 했을 때 (“LINE” 1241.0 1047.13 0.0) 제일 앞이 문자로 들어가서 그런가 이런식으로 잘 나오더라구요
      foreach를 이번에 처음 써봐서 많이 버벅되네요ㅠ
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. 수야12 Lv.21
      2021-02-04T22:00:20+09:00답변 등록 답변 등록 일시 2021-02-04 10:00 pm

      참고용으로 하나 올립니다 화이팅~!! 

      https://blog.naver.com/khs12kim/222232155918
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. 닐스몹 Lv.1
      2021-02-05T08:19:39+09:00답변 등록 답변 등록 일시 2021-02-05 8:19 am

      항상 도움 감사드립니다..

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. 닐스몹 Lv.1
      2021-02-05T10:48:56+09:00답변 등록 답변 등록 일시 2021-02-05 10:48 am

      만들어주신 리습 확인해봤는데요

      (vl-remove ‘(lambda (-1 5 10 11)) en) 이 어떤 역할을 하는지 알 수 있을까요..?
      !en 했을 때 나오는 값이랑 변화가 없는거 같아서 인터넷에 찾아보려고 했는데 찾는게 쉽지가 않네요ㅜ
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    7. 수야12 Lv.21
      2021-02-05T12:18:36+09:00답변 등록 답변 등록 일시 2021-02-05 12:18 pm

      entget으로 라인 데이터를 읽어 들이면  대충

      ((-1 . <Entity name: 7e744e20>) (0 . “LINE”) (330 . <Entity 
      name: 7ede2cf8>) (5 . “AF9C”) (100 . “AcDbEntity”) (67 . 0) (410 . “Model”) (8 
      . “0”) (100 . “AcDbLine”) (10 8380.23 5192.33 0.0) (11 11503.2 5306.25 0.0) 
      (210 0.0 0.0 1.0)) 이런식으로 뜨잖아요 거기서  저 번호가 들어간 것들을 제거 해서 
      ((0 . “LINE”)(330 . <Entity name: 7ede2cf8>) (100 . “AcDbEntity”) (67 . 0) (410 . “Model”) (8 . “0”) (100 . “AcDbLine”) (210 0.0 0.0 1.0)) 이런식으로 남기는 구문입니다 님께서 사용하신 entmake 구문과 같은거예요 
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    8. 닐스몹 Lv.1
      2021-02-05T13:24:11+09:00답변 등록 답변 등록 일시 2021-02-05 1:24 pm

      자세한 설명 감사합니다! 좋은하루 되세요ㅎㅎ

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter

    Sidebar

    질문하기
    공지사항

    • AI CAD의 미래! 캐디안 2025 1+1 프로모션 안내 2025-05-14

    Adv 234x60

    aalan

    Adv 234x60

    aalan

    Adv 120x600

    aalan

    Explore

    • 홈
    • 카테고리
      • AutoCAD & CADian
      • Inventor & Solidworks
      • Revit & ArchiCAD
      • 자유질문
      • 기타
    • 투표
    • 커뮤니티 그룹
    aalan

    Footer

    Support

    • 회사 및 서비스 소개
    • 자주 묻는 질문
    • 문의하기

    Guide

    • 제휴/협업 안내
    • 광고 서비스 안내

    Policy

    • 서비스 이용약관
    • 개인정보 처리방침
    • 광고성 정보 수신 동의

    Contents

    • 고밍스토리
    • 리습 시리즈

    정소프트 | 사업자등록번호 : 677-40-00198 | 대표 : 정은숙 | 이메일 : gocad.manager@gmail.com
    주소 : 서울특별시 강서구 양천로 400-12, 6층 614,615,617호(등촌동, 더리브골드타워)
    Copyright. 2012-2024 GOCAD All rights reserved