비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 193283
다음
익명
익명
등록일: 2024-11-292024-11-29T20:20:49+09:00 2024-11-29T20:20:49+09:00카테고리: AutoCAD & CADian

종단 작성시 텍스트의 레벨값을 포인트로 그리기.

종단을 그릴려고하는데요.
문자에 있는 레벨값을 y값으로 인식해서 제가 설정한 시작점에서 각 레벨값을
포인트 및 문자로 보이게하는 리습이 있는데, 이상하게 되는 게 있고 안되는 게 있어서 어려움이 있어요;;
뭐가 문제인지 봐주실 수 있나요?
아니면 다른 방법이 있을까요?

아래는 리습 내용이예요.

(defun c:dell () ;
(setq ss (ssget ‘((0 . “TEXT”)))) ; 텍스트 객체만 선택
(setq pt-list ‘()) ; 점들을 저장할 리스트 초기화

;; 수직선만 선택 (X값이 일정한 선들만 선택)
(setq line-ss (ssget ‘((0 . “LINE”)))) ; 선 객체만 선택

(if (and ss line-ss) ; 텍스트 객체와 선 객체가 모두 선택된 경우
(progn
;; 기준점 설정 (시작점 X, Y, Z)
(setq start-point (getpoint “nSpecify the start point for the first level (pick point): “))

;; 시작점에서 X, Y 좌표를 추출
(setq start-x (car start-point)) ; 시작점의 X값
(setq start-y (cadr start-point)) ; 시작점의 Y값

;; 텍스트 크기 설정 (사용자 입력)
(setq text-size (getreal “nEnter the text size: “)) ; 텍스트 크기를 사용자에게 입력받기

;; 선택된 모든 텍스트 객체 순차적으로 처리
(setq n (sslength ss)) ; 선택한 텍스트 개수
(setq i 0) ; 인덱스를 0으로 초기화
(setq x-values ‘()) ; 수직선의 X값을 저장할 리스트 초기화

;; 수직선들의 X값을 저장
(setq line-i 0)
(while (< line-i (sslength line-ss)) ; 선 객체들에 대해 반복
(setq line (ssname line-ss line-i)) ; 선 객체 가져오기
(setq pt1 (cdr (assoc 10 (entget line)))) ; 선의 시작점
(setq pt2 (cdr (assoc 11 (entget line)))) ; 선의 끝점

;; X값이 동일하면 수직선으로 간주하고, X값만 리스트에 추가
(if (= (car pt1) (car pt2)) ; X값이 같으면 수직선으로 판단
(setq x-values (append x-values (list (car pt1)))) ; X값을 추가
)

(setq line-i (1+ line-i)) ; 선 인덱스를 증가
)

;; X값을 오름차순으로 정렬
(setq x-values (vl-sort x-values ‘<))

;; 선택된 텍스트 객체 순차적으로 처리하기 위해 객체의 순서를 반대로 변경
(setq text-objects ‘()) ; 텍스트 객체 리스트 초기화
(setq j (- n 1)) ; 역순으로 시작

;; 텍스트 객체를 리스트에 저장 (선택된 객체의 순서가 역순인 경우 반대로 배열)
(while (>= j 0) ; n개만큼 반복 (역순으로)
(setq ent (ssname ss j)) ; 선택된 텍스트 객체 가져오기
(setq text-objects (append text-objects (list ent))) ; 텍스트 객체 리스트에 추가
(setq j (1- j)) ; 인덱스를 1 감소시켜서 이전 텍스트 객체로 이동
)

;; 텍스트 객체들을 순차적으로 처리
(setq x-value (car x-values)) ; 첫 번째 수직선의 X값을 기준으로 시작

(foreach ent text-objects ; 텍스트 객체 순차 처리
(setq level (cdr (assoc 1 (entget ent)))) ; 텍스트 객체에서 레벨값 추출
(setq level (atof level)) ; 레벨값을 실수로 변환하여 Y값으로 사용

;; Y값은 시작점의 Y값을 기준으로, 레벨값에 따라 계산
(setq y-value (+ start-y level)) ; 시작점 Y값을 기준으로 레벨을 더하거나 빼서 Y값 계산

;; 각 포인트의 X값은 수직선의 X값, Y값은 계산된 레벨값
(setq pt (list x-value y-value 0)) ; X값 = 수직선의 X값, Y값 = 계산된 레벨값, Z값 = 0
(setq pt-list (append pt-list (list pt))) ; 점 리스트에 추가

;; 텍스트 삽입: 텍스트 크기, 내용은 레벨값, X값, Y값
;; 텍스트는 레벨값 포인트 아래로 삽입: Y – 텍스트 크기
(command “TEXT” (list x-value (- y-value text-size) 0) text-size 0 (rtos level 2 2) “”)

;; X값 업데이트
(setq x-values (cdr x-values)) ; X값 리스트에서 첫 번째 값 제거
(setq x-value (car x-values)) ; 다음 X값을 가져옴
)

;; 포인트 그리기
(setq i 0)
(while (< i (length pt-list))
(setq pt (nth i pt-list)) ; 점 리스트에서 포인트 가져오기
(command “POINT” pt) ; 포인트 삽입
(setq i (1+ i)) ; 인덱스를 1 증가시켜서 다음 점으로 이동
)

(princ “nLevel values added as text and points drawn.”) ; 메시지 출력
)
(princ “nNo text objects or vertical lines selected.”) ; 텍스트 객체나 수직선 객체가 선택되지 않은 경우
)

(princ) ; LISP 함수 종료
)

  • 1
  • 0 0 답변
  • 126 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • 캐드에서 복사해서 방향 옮길때 다른방향으로 가요.
    • FAQ 51을 참조 하라는데 FAQ가 어디에 있나요??
    • jsk.shx 파일 받을 부탁드립니다 ㅠ

    답변을 남겨주세요
    응답 취소

    답변을 등록하기 위해서는 로그인이 필요합니다.

    비밀번호를 잊으셨나요?

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

    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

    링크 삽입/편집

    대상 URL을 입력하세요

    또는 기존의 콘텐츠에 링크

      검색어가 지정되지 않았습니다. 최근 항목 표시 검색하거나 위와 아래 화살키를 이용하여 항목을 선택하세요.