비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 95574
다음
Lv.0
등록일: 2012-07-052012-07-05T09:58:46+09:00 2012-07-05T09:58:46+09:00카테고리: AutoCAD & CADian

리습문을 가지고 공부 중인데요..질문이 있어여 글 남깁니다~!

;;;############################################################
;;;
;;;      center-line program Ver 0.1
;;;
;;;      2000,8,15
;;;
;;;############################################################


;; ############## subroutine ############################
;; dtr
;; rtd
;; dxf
;; vtxs12
;; vtxs14
;; pl_length
;; nearpt
;; polyline
;; orthopt


;; ##############  contents  ############################
;; draw center line ———————>   dline
;; make road               ————–>   road


(defun dtr (a)
    (* pi (/ a 180.0)))


(defun rtd (a)
    (/ (* a 180.0) pi))


(defun dxf(code elist)
  (cdr (assoc code elist)))


(defun vtxs12(ent / ptlist)
   (setq ent (entnext ent))
   (while (= “VERTEX” (cdr (assoc  0 (entget ent))))
      (setq ptlist (cons  (cdr (assoc 10 (entget  ent))) ptlist)
            ent    (entnext ent)
      );if
   );while
   ptlist
)


(defun vtxs14(ent / ptlist s1 count)
   (setq count 0)
   (repeat (length ent)
      (setq s1 (nth count ent))
      (if (= 10 (car s1))
        (setq ptlist (cons (cdr s1) ptlist)))
      (setq count (1+ count))
 )
   ptlist
)


(defun pl_length(ent / count pt1 pt2 ll)
    (setq count 0 ll 0.0)
    (repeat (1- (length ent))
 (setq pt1 (nth count ent))
 (setq pt2 (nth (1+ count) ent))
 (setq ll (+ ll (distance pt1 pt2)))
 (setq count (1+ count))
    )
    ll
)


(defun nearpt(pt1 ent / count pt2 l_short l_long mx my)
    (setq count 0 l_short 32000.0)
    (repeat (length ent)
 (setq l_long (distance pt1 (nth count ent)))
 (if (> l_short l_long)
     (progn
  (setq l_short l_long)
  (setq pt2 (nth count ent))
     )
 )
 (setq count (1+ count))
    )


    (princ “n Original Road # : “)
    (princ pt1)(terpri)


    (princ “n Center Road   # : “)
    (princ pt2)(terpri)


    (setq mx (/ (+ (car pt1) (car pt2)) 2))
    (setq my (/ (+ (cadr pt1) (cadr pt2)) 2))
    (setq pt2 (list mx my 0.0))
    pt2
)


(defun polyline(ent / osm pt n)
    (setq osm (getvar “osmode”))
    (setvar “osmode” 0)
    (setvar “cmdecho” 0)
    (setq n 0)
    (command “pline”)
    (while (nth n ent)
 (setq pt (nth n ent))
 (command pt)
 (setq n (1+ n))
    )
    (command)
    (setvar “cmdecho” 1)
    (setvar “osmode” osm)
    (princ)
)


(defun orthopt(pt1 pt2 / osm len rads opt1 opt2 pt_list)
    (setq osm (getvar “osmode”))
    (setvar “osmode” 0)
    (setvar “cmdecho” 0)
    (setq pt_list ())
    (setq len (distance pt1 pt2))
    (setq rads (angle pt1 pt2))
    (setq opt1 (polar pt1 (+ rads 1.59) len))
    (setq opt2 (polar pt1 (- rads 1.59) len))
    (setq pt_list (cons opt1 pt_list))
    (setq pt_list (cons opt2 pt_list))
    (setvar “cmdecho” 1)
    (setvar “osmode” osm)
    (princ)
    pt_list
)


(defun c:df( / fob sob fo_list so_list fob_lst sob_lst pt_lst ll sob_new_list)


    (setq fob (entsel “n first pline : “))
    (if fob (command “chprop” fob “” “c” “ByLayer” “”))


    (setq sob (entsel “n second pline : “))
    (if sob (command “chprop” sob “” “c” “ByLayer” “”))


    (setq fo_list (entget (car fob)))
    (setq so_list (entget (car sob)))


    (setq sl (dxf 8 fo_list))
    (command “-layer” “m” “mid” “s” “mid” “”)


    (if (= “LWPOLYLINE” (dxf 0 fo_list))
 (setq fob_lst (vtxs14 fo_list))
 (setq fob_lst (vtxs12 (dxf -1 fo_list)))
    )


    (if (= “LWPOLYLINE” (dxf 0 so_list))
 (setq sob_lst (vtxs14 so_list))
 (setq sob_lst (vtxs12 (dxf -1 so_list)))
    )


    (setq fob_ll (pl_length fob_lst))
    (princ “n First Length  : “)
    (princ fob_ll)(terpri)
    (setq sob_ll (pl_length sob_lst))
    (princ “n Second Length : “)
    (princ sob_ll)(terpri)


    (if (> (length sob_lst) (length fob_lst))
 (progn
     (setq pt_lst fob_lst)
     (setq fob_lst sob_lst)
     (setq sob_lst pt_lst)
 )
    )


    (setq count 0)
    (setq sob_new_list ())


    (repeat (length fob_lst)
 (setq pt1 (nth count fob_lst))
 (setq pt_new (nearpt pt1 sob_lst))
 (setq sob_new_list (cons pt_new sob_new_list))
 (setq count (1+ count))
    )


    (polyline sob_new_list)
    (setq sob_new_list nil)


    (princ)
)


(defun c:road(/ val fob sob fo_list fob_lst pt1 pt2 pt_list)
    (setq osm (getvar “osmode”))
    (setvar “osmode” 0)
    (setvar “cmdecho” 0)
    (setq val (getreal “n Road Width : “))  
    (setq fob (entsel “n Select polyline to double: “))
    (setq fo_list (entget (car fob)))


    (if (= “LWPOLYLINE” (dxf 0 fo_list))
 (setq fob_lst (vtxs14 fo_list))
 (setq fob_lst (vtxs12 (dxf -1 fo_list)))
    )


    (setq pt1 (nth 0 fob_lst))
    (setq pt2 (nth 1 fob_lst))


    (setq pt_list (orthopt pt1 pt2))


    (setq pt1 (nth 0 pt_list))
    (setq pt2 (nth 1 pt_list))


    (command “offset” (/ val 2.0) (car fob) pt1 “”)
    (command “offset” (/ val 2.0) (car fob) pt2 “”)
    (command “erase” (car fob) “”)


    (setvar “cmdecho” 1)
    (setvar “osmode” osm)


    (princ)


)


도로 중심선을 그리는 리습문을 가지고 공부 중 입니다.
공부를 하다가 이해가 잘 되질 않는 부분이 있어서요..

위 붉은색으로 표시된 부분이 이해가 잘 되질 않네요.

차근차근 리습문을 실행하면서 해보고 있는데요..

위 붉은색으로 표시된 부분을 실행 하면 nil 값을 나오더라구요..

어떠걸 구하고자 하는지 알고 싶네요..

윗 부분 이해좀 시켜주세요 ^^;




  • 0
  • 22 조회
공유
  • Facebook

    관련 있는 질문들

    • 객체 전체 간격 조정 할수 있을까요?
    • 블록 안에서 블록을 만들 수 있나요? 과거에는 됐었는데 2023부터 안되나요?
    • 캐드 2023 find 명령어가 너무 느립니다.
    • 폴리선 각도에 맞는 문자를 폴리선위에 올리고싶습니다. (관로선형에 위에문자올릴때)

    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