비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 113571
다음
진행 중
호옹아
호옹아Lv.0
등록일: 2022-01-122022-01-12T23:42:42+09:00 2022-01-12T23:42:42+09:00카테고리: AutoCAD & CADian

숫자리습 음수인식을 못합니다

사칙연산 리습인데 숫자의 음수인식을 못합니다.

예를 들면 더하기를 했을 때 숫자 15와 숫자 -2를 선택하면 13 나와야 하는데 17이 나옵니다.
도와주십시오~
파일올리기가 안되서 파일내용 올립니다
;;==================================================================
;  숫자 더하기(98주말농부)
;  ->숫자가 포함된 문자을 다중선택후 숫자만을 더한값을 자동으로 표기
;  ->설정값변경 옵션추가/자리수 선택가능(2007.5.14)
;;—— Number plus ———————————————–
(defun c:=(/ os ot ts a yn ht dot ss grpt pt1 ssn txnum-lst en tx k
              pn ar1 ar2 ar3)
;->*error* start
 (defun *error* (msg)(princ “error: “)(princ msg)
 (setvar “osmode” os)(setvar “orthomode” ot)
 (princ))
;-<*error* end
   (prompt “…더하기”)
   (setq os (getvar “osmode”) ot (getvar “orthomode”)
         ts (getvar “textsize”))
   (setvar “orthomode” 0) (setvar “osmode” 0)
   (if (= dwnp nil) (setq dwnp 2))
;->설정값 변경
   (setq a (strcat “n현재 설정값(문자높이=” (rtos ts 2 1)
            “,자리수=” (rtos dwnp 2 0) “)을 변경할까요? [Y/N] <N> : “))
   (initget “Yes No”)
   (setq yn (getkword a))
   (if (= yn “Yes”)
     (progn
       (setq a (strcat “n문자높이<” (rtos ts 2 1) “>:”))
       (setq ht (getdist a))
       (if (= ht nil) (setq ht ts))
       (setq a (strcat “n소수점 자리수을 지정<” (rtos dwnp 2 0) “>:”))
       (setq tem (getint a))
       (if (= tem nil) (setq dot dwnp) (setq dot (abs tem)) )
       (setq dwnp dot)
     )
     (setq ht ts dot dwnp)
   )
;-<
   (setq ss (ssget ‘((0 . “text”))))
   (setq grpt (grread T))
   (setq pt1 (cadr grpt))
   (setq ssn (sslength ss))
   (setq txnum-lst nil);리스트 초기화
   (setq k 0)
   (repeat ssn
      (setq en (ssname ss k))
      (setq tx (cdr (assoc 1 (entget en))))
      ;->문자내에 컴마 없애기
      (setq pn (vl-string-position (ascii “,”) tx));nil
      (while pn
         (setq tx (strcat (substr tx 1 pn) (substr tx (+ pn 2)) ))
         (setq pn (vl-string-position (ascii “,”) tx))
      )
      ;-<
      (setq txnum-lst (append (@tx_num_lst tx) txnum-lst))
      (setq k (+ k 1))
   )
   (setq ar1 (apply ‘+ txnum-lst))
   (setq ar2 (rtos ar1 2 dot))
   (if (>= dot 1)
       (setq ar3 (@tx_dot ar2 dot))
       (setq ar3 ar2)
   )
   (command “text” “j” “r” pt1 ht “0” ar3)
   (prompt “nEnter text point->”)
   (command “move” “l” “” pt1 pause)
   (setvar “osmode” os)(setvar “orthomode” ot)
(prin1))
;;==========================================================
;  자릿수 맞추기(2007.05.주말농부)
;  ->문자로된 숫자의 자리수를 맞추고 문자로 되돌리기
;;———————————————————-
(defun @tx_dot(tx dot / k k1 tx tx1 tx2 tx3)
   (setq k1 (vl-string-position (ascii “.”) tx))
   (if (= k1 nil) (setq tx1 (strcat tx “.0”)) (setq tx1 tx))
   (setq k (strlen tx1))
   (setq k1 (vl-string-position (ascii “.”) tx1))
   (setq tx2 (substr tx1 1 (+ k1 1)))
   (setq tx3 (substr tx1 (+ k1 2)))
   (setq k (strlen tx3))
   (while (< k dot)
      (setq tx3 (strcat tx3 “0”))
      (setq k (strlen tx3))
   )
   (strcat tx2 tx3)
)
;;========================================================
;  숫자 리스트 작성(2007.05.주말농부)
;  ->문자중 숫자만의 리스트을 만드는 리습 (tx->txnum-lst)
;;——————————————————–
(defun @tx_num_lst(tx / txn k tx1 tx2 tx3 txnum-lst)
  (setq txn (strlen tx)  tx2 “” txnum-lst nil k 1  )
  (repeat (+ txn 1)
    (setq tx1 (substr tx k 1))
    (if (or (= 46 (ascii tx1)) (<= 48 (ascii tx1) 57))
        (setq tx2 (strcat tx2 tx1))
        (progn
          (if (/= tx2 “”)(setq txnum-lst (append txnum-lst (list (atof tx2)))) )
          (setq tx2 “”)
        )  )
    (setq k (1+ k))
  )
txnum-lst)
;;=====================================================================
;  숫자 빼기(98 주말농부)
;  ->처음선택한 수에서 나중에 선택된 수 들을 빼고 결과를 화면에 표기함
;  ->숫자가 포함된 문자을 선택하면 숫자만을 계산함(2007.5.23)
;  ->설정값변경 옵션추가/자리수 선택가능(2007.5.23)
;;—— Number minus ————————————————-
(defun c:-(/ os ot ts a yn ht dot ss grpt pt1 ssn txnum-lst en tx k
              pn ar1 ar2 ar3)
;->*error* start
 (defun *error* (msg)(princ “error: “)(princ msg)
 (setvar “osmode” os)(setvar “orthomode” ot)
 (princ))
;-<*error* end
   (prompt “…빼기”)
   (setq os (getvar “osmode”) ot (getvar “orthomode”)
         ts (getvar “textsize”))
   (setvar “orthomode” 0) (setvar “osmode” 0)
   (if (= dwnm nil) (setq dwnm 2))
;->설정값 변경
   (setq a (strcat “n현재 설정값(문자높이=” (rtos ts 2 1)
            “,자리수=” (rtos dwnm 2 0) “)을 변경할까요? [Y/N] <N> : “))
   (initget “Yes No”)
   (setq yn (getkword a))
   (if (= yn “Yes”)
     (progn
       (setq a (strcat “n문자높이<” (rtos ts 2 1) “>:”))
       (setq ht (getdist a))
       (if (= ht nil) (setq ht ts))
       (setq a (strcat “n소수점 자리수을 지정<” (rtos dwnm 2 0) “>:”))
       (setq tem (getint a))
       (if (= tem nil) (setq dot dwnm) (setq dot (abs tem)) )
       (setq dwnm dot)
     )
     (setq ht ts dot dwnm)
   )
;-<
   (setq ss (ssget ‘((0 . “text”))))
   (setq grpt (grread T))
   (setq pt1 (cadr grpt))
   (setq ssn (sslength ss))
   (setq txnum-lst nil);리스트 초기화
   (setq k (- ssn 1))
   (repeat ssn
      (setq en (ssname ss k))
      (setq tx (cdr (assoc 1 (entget en))))
      ;->문자내에 컴마 없애기
      (setq pn (vl-string-position (ascii “,”) tx));nil
      (while pn
         (setq tx (strcat (substr tx 1 pn) (substr tx (+ pn 2)) ))
         (setq pn (vl-string-position (ascii “,”) tx))
      )
      ;-<
      (setq txnum-lst (append (@tx_num_lst tx) txnum-lst))
      (setq k (- k 1))
   )
   (setq ar1 (apply ‘- txnum-lst))
   (setq ar2 (rtos ar1 2 dot))
   (if (>= dot 1)
       (setq ar3 (@tx_dot ar2 dot))
       (setq ar3 ar2)
   )
   (command “text” “j” “r” pt1 ht “0” ar3)
   (prompt “nEnter text point->”)
   (command “move” “l” “” pt1 pause)
   (setvar “osmode” os)(setvar “orthomode” ot)
(prin1))
  • 0
  • 2 2 답변
  • 138 조회
공유
  • Facebook

    관련 있는 질문들

    • 선배님들 덕트 엘보 작성 리습좀 봐주세요
    • insert 삽입할때 레이어도 같이 변경가능할까요?
    • 캐드 파일을 PDF로 변환 할 때 문제점 도와주세요 ㅠ
    • 질문오토캐드 라인타입이 너무 많은데 어떻게 정리하나요..

    2 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 수야12 Lv.21
      2022-01-13T07:17:30+09:00답변 등록 답변 등록 일시 2022-01-13 7:17 am

      숫자가 포함된 문자을 다중선택후 숫자만을 더한값을 자동으로 표기

      이 리습은 abc-1234, tes-23-re같은 형식의 문자를 선택해서 무조건 “숫자만” 더하거나 빼는 리습입니다
      abc-1234의 abc다음 문자-1234가 작성자가 음수라고 하면 음수고 그냥 구분기호 “-“다음에 숫자 1234다 라고 하면 그런거 처럼 컴퓨터는 알 수가 없죠
      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. 닐스몹 Lv.1
      2022-01-13T08:43:38+09:00답변 등록 답변 등록 일시 2022-01-13 8:43 am

      -2를 @tx_num_lst 함수에서 2로 바꿔버리는 거 같네요

      • 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