비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 104218
다음
진행 중
Lv.0
등록일: 2015-06-022015-06-02T18:57:32+09:00 2015-06-02T18:57:32+09:00카테고리: AutoCAD & CADian

각도 기준점을 넣는 리습을 만드는데 한번 봐주세요…ㅜㅜ

저번주부터 내내 짜는데 너무 안되, 답답해서 도움을 요청드립니다ㅠㅜ
사정상 리습전체를 올리기가 좀 그래서 일부분만 올려드린점 양해부탁드립니다..

일단 최종 실행은

(command “_MOVE” (entlast) “” 1sttip1 (polar 1sttip1 (angle midpt1 nmidpt1) backy))

입니다.

제가 만들고 있는것은 command에서 보시면 nmidpt1인데,

제가 의도하려는걸 쉽게 말씀드리자면
만약 원점이 기준이라면 우측으로 기다란 도형이 0도의 각도로 뽑힐때, 
그 도형의 y축 move기준점(nmidpt1)은 긴 도형의90도가 되게 만들고, 저 위에 command에서는 긴 도형에서 해당방향기준으로 무조건 90도로 이동을 시키려는 겁니다.
조건을 더 설명해 드리자면, 만약 도형이 우측으로 길게 뽑히면  센터 가까이 있는 pcen부근을 기준으로
위아래로 움직이게 되어있습니다. 그래서 만약 위로 움직이면 위로 향하는 90도 기준점이 만들어지는거고, 아래로 움직이면 아래를 향하는 -90도 기준점이 만들어 지는겁니다.< 이것이 핵심..

pcenx는 움직이는 축 기준의 x축
pceny는 움직이는 축 기준의 y축
midpt1은 pcen와 동일한 라인인데 약간 옆으로 떨어진 포인트로 보시면 될것 같습니다.
그러니까 우측으로 뽑혔을댄 우측으로 조금 더 옆에 있고, 좌측일땐 좌측으로 좀더 옆으로, 탑일땐
탑쪽으로 더 위치한다고 보시면 됩니다. 선상은 동일합니다.(좌우측은 x가 동일, 위아래는 y가 동일)
midpt3는 움직이는 도형의 끝 축이라고 생각하시면 됩니다.
backy는 해당 빔의 움직이는 방향의 90도로 이동할 거리
dirt은 해당방향이라고 보시면 될것 같습니다.

좀더 부연설명을 해드리자면
                                                                                               ㅁ top
                                                                                               ㅁ
                                                                                               ㅁ
                                                                                               ㅁ
                                                          left ㅁㅁㅁㅁㅁㅁㅁ(0,0) ㅁㅁㅁㅁㅁㅁㅁㅁ right
(bottom은 생략..;;)
이렇게 뽑힌다고 생각하시면 되겠습니다..
물론 pcen은 0,0이 아니구요 여러 사분면에 해당됩니다.

아래에 리습은 복붙한거라 아마  top left bottom은 각도에 따른 수정이 있어야 되서 아마 안될거라 생각했는데, right는 뽑으면 나와야되는데, 90도가 아니라 자꾸 180도 즉 반대방향으로 나옵니다 ㅠ
실행하면서 visual lisp 콘솔로 수치 일일이 확인해가면서 하는데 분명 좌표는 맞는데 반대로 자꾸 뜨네요ㅠㅠ
어디가 문제가 있는지 한번 봐주세요ㅠ 문법적으로나 아니면 잘못된 부분이 있는지 확인부탁드립니다ㅠ

첨부는 안되어서 글로 올려드립니다.



;————————————————————————-
   ;—해당 방향기준으로 90도 각도를 준다. y backing length를 넣는 기준점.—
   ;————————————————————————-
   (cond
     (progn
     (if (= dirt “Top”);top 방향으로
       (progn
        (if (> pcenx (car midpt3));x축이 왼쪽 일 경우
           (progn
          (setq nmidpt1 (list (- (abs (- 2 pcenx))) pceny))))
        (if (< pcenx (car midpt3));x축이 오른쪽 일 경우
      (progn
          (setq nmidpt1 (list (abs (+ 2 pcenx)) pceny))))
       )
     )
     (if (= dirt “bottom”);Bottom 방향으로
       (progn
        (if (> pcenx (car midpt3));x축이 왼쪽 일 경우
      (progn
       (setq nmidpt1 (list (- (abs (- 2 pcenx))) pceny))))
        (if (< pcenx (car midpt3));x축이 오른쪽 일 경우
          (progn
       (setq nmidpt1 (list (abs (+ 2 pcenx)) pceny))))
       )
     )
    (if (= dirt “left”);left 방향으로
       (progn
        (if (> pceny (cadr midpt3));y축이 아래 일 경우
     (progn
       (setq nmidpt1 (list pcenx (- (abs (- 2 pceny)))))))
        (if (< pceny (cadr midpt3));y축이 위 일 경우
     (progn
       (setq nmidpt1 (list pcenx (abs (+ 2 pceny))))))
       )
     )
     (if (= dirt “Right”);Right 방향으로
        (progn
    (if (> pceny (cadr midpt3));y축이 아래 일 경우
      (progn
        (setq nmidpt1 (list pcenx (- (abs (- 2 pceny)))))))
         (if (< pceny (cadr midpt3));y축이 위 일 경우
      (progn
        (setq nmidpt1 (list pcenx (abs (+ 2 pceny))))))
        )
     )
   )
  )

글을 쓰다보니 엄청 길어졌네요… 파일첨부안되는점 양해 부탁드리며, 고수님들 부탁드리겠습니다.
(–) (__)

  • 0
  • 8 8 답변
  • 17 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드 2023 find 명령어가 너무 느립니다.
    • 폴리선 각도에 맞는 문자를 폴리선위에 올리고싶습니다. (관로선형에 위에문자올릴때)
    • mvsetup 및 align 안됨
    • mvsetup 및 align 안됨

    8 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. [Deleted User]
      2015-06-02T19:00:43+09:00답변 등록 답변 등록 일시 2015-06-02 7:00 pm

      혹시 부연설명이 더 필요하시면 더 말씀드리겠습니다…

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. [Deleted User]
      2015-06-03T10:05:07+09:00답변 등록 답변 등록 일시 2015-06-03 10:05 am

      (setq 1sttip2
       (if (wcmatch (strcase dirt) “TOP,BOTTOM”)
        (list
         ((if (> pcenx (car midpt3)) – +) (car 1sttip1) backy)
         (cadr 1sttip1)
        )
        (list
         (car 1sttip1)
         ((if (> pceny (cadr midpt3)) – +) (cadr 1sttip1) backy)
        )
       )
      )
      (command “_MOVE” (entlast) “” 1sttip1 1sttip2)

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    4. [Deleted User]
      2015-06-03T11:05:46+09:00답변 등록 답변 등록 일시 2015-06-03 11:05 am

      뭐하남님 답변 감사드립니다.

      근데 이해가 안되는게 있어서 몇가지 더 질문 드립니다.
      ((if (> pcenx (car midpt3)) – +) (car 1sttip1) backy)
      여기서 (car 1sttip1) 하고 backy는 무슨 역할인가요?
      그리고 if문 뒤에 – +는 어떻게 해석 해야되나요?
      그리고 top bottom만 쓴 이유가 left, right도 동일하게 적용하면 되어서 그런거죠?
      일단 실행은 해보는데 캐드가 맛이가서 이상하게 나오네요..ㅠ;

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    5. [Deleted User]
      2015-06-03T11:20:56+09:00답변 등록 답변 등록 일시 2015-06-03 11:20 am

      두번째 list가 left,right인가요?

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    6. [Deleted User]
      2015-06-03T11:46:46+09:00답변 등록 답변 등록 일시 2015-06-03 11:46 am

      네 그렇죠. 쓸데없이 길게할 필요가 없죠.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    7. [Deleted User]
      2015-06-03T12:20:22+09:00답변 등록 답변 등록 일시 2015-06-03 12:20 pm

      뭐하남님…

      위에서 질문드린
      ((if (> pcenx (car midpt3)) – +) (car 1sttip1) backy) 이부분 해석이 안되서 그러는데;
      설명 부탁드립니다; if문에 넣은 -+와 if뒤에(car 1sttip1) backy은 왜 같이 묶인건지 이해가 되지 않습니다;
      그리고 저는 한 포인트를 잡고 그 포인트와 도형이 뿌려진 방향에있는 포인트와 같이 해서 각도를 잡으려고 한건데, 그 포인트를 그냥 임의의 숫자로 2를 넣었는데 그 부분은 올리신 코드에서 어떻게 처리하신건가요?? 그 임의의 숫자가 바뀔때마다 위치에 따라 이동되는 값이 조금씩 달라지고 또 사분면에 따라 조금 씩 다르더라고요..; 이동되는 backy값도 midpt1,midpt3를 이용해서 tan값과 sin값을 계산한것이거든요;
      이야기가 좀 샜는데, 코드 해석 부탁드립니다 ㅠ

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    8. [Deleted User]
      2015-06-03T12:32:14+09:00답변 등록 답변 등록 일시 2015-06-03 12:32 pm

      ((if (> pcenx (car midpt3)) – +) (car 1sttip1) backy)
      만약, x좌표(car midpt3)가 pcenx보다 작으면 (- (car 1sttip1) backy)
      또는 아니면 더하기, polar함수를 쓸필요가 없어서 그리한거입니다.
      님이 짜신 코드를 간략하게 줄이고 잘못된 부분을 수정한 겁니다.
      그리고 command를 쓸 경우 osnap의 영향을 받으니 그점 유의하시구요.

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    9. [Deleted User]
      2015-06-03T15:05:24+09:00답변 등록 답변 등록 일시 2015-06-03 3:05 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