비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 113804
다음
진행 중
곧ㅎ캐드
곧ㅎ캐드Lv.1
등록일: 2022-05-252022-05-25T14:17:59+09:00 2022-05-25T14:17:59+09:00카테고리: AutoCAD & CADian

면적리습 수정부탁드리겠습니다!!!!!!!

안녕하세요 면적리습을 하나가지고있는데 조금 옵션이필요합니다 ㅜㅜㅜ

1.옵션으로 글자크기및,축척,자리수 조절가능해야됩니다
2.지금 현재 작동방법은 리습 치고 해치만 잡히는 그런 시스템인데 해치를먼저잡고 그것에대한 합계를 원합니다
꼭좀 부탁드리겠습니다
명령어 sea
;;; HATCHB.LSP ver 2.1
;;; Recreates hatch boundary by selecting a hatch
;;; Boundary is created in current layer/color/linetype in WCS
;;; By Jimmy Bergmark
;;; Copyright (C) 1997-2004 JTB World, All Rights Reserved
;;; Website: http://www.jtbworld.com
;;; E-mail: info@jtbworld.com
;;; 2000-02-12 – First release
;;; 2000-03-27 – Counterclockwise arc’s and ellipse’s fixed
;;;              Objects created joined to lwpolyline if possible
;;;              Error-handling, undo of command
;;;              Can handle PLINETYPE = 0,1,2
;;; 2000-03-30 – Integrating hatchb and hatchb14
;;;              Selection of many hatches
;;;              Splines supported if closed.
;;; 2001-04-02 – Fixed bug with entmake of line with no Z for r14
;;; 2001-07-31 – Removed an irritating semicolon to enable polylines to be created.
;;; 2001-10-04 – Changed mail and homepage so it’s easy to find when new versions comes up.
;;; 2003-02-06 – Minor fix
;;; 2003-02-17 – Area returned if no islands is found since it’s not consistant
;;; 2003-05-19 – Fix to take PEDITACCEPT variable used in AutoCAD 2004 into account
;;; 2004-11-05 – Minor bugs fixed
;;; Tested on AutoCAD r14, 2000, 2000i, 2002, 2004, 2005
;;; should be working on older versions too.
(defun c:sea () (c:hatchb)) ; this line can be commented out if there is an existing command called hb
(defun c:hatchb (/     es    blay  ed1   ed2   loops1      bptf  part
             et    noe   plist ic    bul   nr    ang1  ang2  obj *ModelSpace* *PaperSpace*
             space cw errexit undox olderr oldcmdecho ss1 lastent en1 en2 ss lwp
             list->variantArray 3dPoint->2dPoint A2k ent i ss2
             knot-list controlpoint-list kn cn pos xv bot area hst
            )
 (setq A2k (>= (substr (getvar “ACADVER”) 1 2) “15”))
 (if A2k
   (progn
     (defun list->variantArray (ptsList / arraySpace sArray)
       (setq arraySpace
       (vlax-make-safearray
  vlax-vbdouble
  (cons 0 (- (length ptsList) 1))
       )
       )
       (setq sArray (vlax-safearray-fill arraySpace ptsList))
       (vlax-make-variant sArray)
     )
     (defun areaOfObject (en / curve area)
       (if en
  (if A2k
    (progn
      (setq curve (vlax-ename->vla-object en))
      (if
        (vl-catch-all-error-p
   (setq
     area
      (vl-catch-all-apply ‘vlax-curve-getArea (list curve))
   )
        )
  nil
  area
      )
    )
    (progn
      (command “._area” “_O” en)
      (getvar “area”)
    )
  )
       )
     )
   )
 )
 (if A2k
  (defun 3dPoint->2dPoint (3dpt)
    (list (float (car 3dpt)) (float (cadr 3dpt)))
  )
 )
  (defun errexit (s)
    (princ “nError:  “)
    (princ s)
    (restore)
  )
  (defun undox ()
    (command “._ucs” “_p”)
    (command “._undo” “_E”)
    (setvar “cmdecho” oldcmdecho)
    (setq *error* olderr)
    (princ)
  )
  (setq olderr  *error*
        restore undox
        *error* errexit
  )
  (setq oldcmdecho (getvar “cmdecho”))
  (setvar “cmdecho” 0)
  (command “._UNDO” “_BE”)
  (if A2k (progn
    (vl-load-com)
    (setq *ModelSpace* (vla-get-ModelSpace
                         (vla-get-ActiveDocument (vlax-get-acad-object))
                       )
          *PaperSpace* (vla-get-PaperSpace
                         (vla-get-ActiveDocument (vlax-get-acad-object))
                       )
    ))
  )
; For testing purpose
; (setq A2k nil)
  
  (if (/= (setq ss2 (ssget ‘((0 . “HATCH”)))) nil)
   (progn
    (setq i 0)
    (setq area 0)
    (setq bMoreLoops nil)
    (while (setq ent (ssname ss2 i))
      (setq ed1 (entget ent))
      (if (not (equal (assoc 210 ed1) ‘(210 0.0 0.0 1.0))) (princ “nHatch not in WCS!”))
      (setq xv (cdr (assoc 210 ed1)))
      (command “._ucs” “_w”)
      (setq loops1 (cdr (assoc 91 ed1))) ; number of boundary paths (loops)
      (if (and A2k (= (strcase (cdr (assoc 410 ed1))) “MODEL”))
        (setq space *ModelSpace*)
        (setq space *PaperSpace*)
      )
      (repeat loops1
        (setq ed1 (member (assoc 92 ed1) ed1))
        (setq bptf (cdr (car ed1))) ; boundary path type flag
        (setq ic (cdr (assoc 73 ed1))) ; is closed
        (setq noe (cdr (assoc 93 ed1))) ; number of edges
 (setq bot (cdr (assoc 92 ed1))) ; boundary type
 (setq hst (cdr (assoc 75 ed1))) ; hatch style
        (setq ed1 (member (assoc 72 ed1) ed1))
        (setq bul (cdr (car ed1))) ; bulge
        (setq plist nil)
        (setq blist nil)
        (cond
          ((> (boole 1 bptf 2) 0) ; polyline
           (repeat noe
             (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
             (setq plist (append plist (list (cdr (assoc 10 ed1)))))
             (setq blist (append blist
                                 (if (> bul 0)
                                   (list (cdr (assoc 42 ed1)))
                                   nil
                                 )
                         )
             )
           )
           (if A2k (progn
             (setq polypoints
                    (apply ‘append
                           (mapcar ‘3dPoint->2dPoint plist)
                    )
             )
             (setq VLADataPts (list->variantArray polypoints))
             (setq obj (vla-addLightweightPolyline space VLADataPts))
             (setq nr 0)
             (repeat (length blist)
               (if (/= (nth nr blist) 0)
                 (vla-setBulge obj nr (nth nr blist))
               )
               (setq nr (1+ nr))
             )
             (if (= ic 1)
               (vla-put-closed obj T)
             )
            )
            (progn
              (if (= ic 1)
                (entmake ‘((0 . “POLYLINE”) (66 . 1) (70 . 1)))
                (entmake ‘((0 . “POLYLINE”) (66 . 1)))
              )
              (setq nr 0)
              (repeat (length plist)
                (if (= bul 0)
                  (entmake (list (cons 0 “VERTEX”)
                                 (cons 10 (nth nr plist))
                           )
                  )
                  (entmake (list (cons 0 “VERTEX”)
                                 (cons 10 (nth nr plist))
                                 (cons 42 (nth nr blist))
                           )
                  )
                )
                (setq nr (1+ nr))
              )
              (entmake ‘((0 . “SEQEND”)))
            )
           )
          )
          (t ; not polyline
           (setq lastent (entlast))
           (setq lwp T)
           (repeat noe
             (setq et (cdr (assoc 72 ed1)))
             (cond
               ((= et 1) ; line
                (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
                (if A2k
                  (vla-AddLine
                    space
                    (vlax-3d-point (cdr (assoc 10 ed1)))
                    (vlax-3d-point (cdr (assoc 11 ed1)))
                  )
                  (entmake
                    (list
                      (cons 0 “LINE”)
                      (list 10 (cadr (assoc 10 ed1)) (caddr (assoc 10 ed1)) 0)
                      (list 11 (cadr (assoc 11 ed1)) (caddr (assoc 11 ed1)) 0)
      ;  (cons 210 xv)
                    )
                  )
                )
                (setq ed1 (cddr ed1))
               )
               ((= et 2) ; circular arc
                 (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
                 (setq ang1 (cdr (assoc 50 ed1)))
                 (setq ang2 (cdr (assoc 51 ed1)))
                 (setq cw (cdr (assoc 73 ed1)))
                 (if (and (equal ang1 0 0.00001) (equal ang2 6.28319 0.00001))
                   (progn
                     (if A2k
                       (vla-AddCircle
                         space
                         (vlax-3d-point (cdr (assoc 10 ed1)))
                         (cdr (assoc 40 ed1))
                       )
                       (entmake (list (cons 0 “CIRCLE”)
                                      (assoc 10 ed1)
                                      (assoc 40 ed1)
                                )
                       )
                     )
                     (setq lwp nil)
                   )
                   (if A2k
                     (vla-AddArc
                       space
                       (vlax-3d-point (cdr (assoc 10 ed1)))
                       (cdr (assoc 40 ed1))
                       (if (= cw 0)
                         (- 0 ang2)
                         ang1
                       )
                       (if (= cw 0)
                         (- 0 ang1)
                         ang2
                       )
                     )
                     (entmake (list (cons 0 “ARC”)
                                    (assoc 10 ed1)
                                    (assoc 40 ed1)
                                    (cons 50
                                          (if (= cw 0)
                                            (- 0 ang2)
                                            ang1
                                          )
                                    )
                                    (cons 51
                                          (if (= cw 0)
                                            (- 0 ang1)
                                            ang2
                                          )
                                    )
                              )
                     )
                   )
                 )
                 (setq ed1 (cddddr ed1))
               )
               ((= et 3) ; elliptic arc
                (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
                (setq ang1 (cdr (assoc 50 ed1)))
                (setq ang2 (cdr (assoc 51 ed1)))
                (setq cw (cdr (assoc 73 ed1)))
                (if A2k (progn
                  (setq obj (vla-AddEllipse
                              space
                              (vlax-3d-point (cdr (assoc 10 ed1)))
                              (vlax-3d-point (cdr (assoc 11 ed1)))
                              (cdr (assoc 40 ed1))
                            )
                  )
                  (vla-put-startangle obj (if (= cw 0) (- 0 ang2) ang1))
                  (vla-put-endangle obj (if (= cw 0) (- 0 ang1) ang2))
                 )
                 (princ “nElliptic arc not supported!”)
                )
                (setq lwp nil)
               )
               ((= et 4) ; spline
                (setq ed1 (member (assoc 94 (cdr ed1)) ed1))
                (setq knot-list nil)
                (setq controlpoint-list nil)
  (setq kn (cdr (assoc 95 ed1)))
                (setq cn (cdr (assoc 96 ed1)))
                (setq pos (vl-position (assoc 40 ed1) ed1))
                (repeat kn
                  (setq knot-list (cons (cons 40 (cdr (nth pos ed1))) knot-list))
                  (setq pos (1+ pos))
                )
                (setq pos (vl-position (assoc 10 ed1) ed1))
                (repeat cn
                  (setq controlpoint-list (cons (cons 10 (cdr (nth pos ed1))) controlpoint-list))
                  (setq pos (1+ pos))
                )
                (setq knot-list (reverse knot-list))
                (setq controlpoint-list (reverse controlpoint-list))
                (entmake (append
                 (list ‘(0 . “SPLINE”))
                               (list (cons 100 “AcDbEntity”))
                               (list (cons 100 “AcDbSpline”))
                               (list (cons 70 (+ 1 8 (* 2 (cdr (assoc 74 ed1))) (* 4 (cdr (assoc 73 ed1))))))
                               (list (cons 71 (cdr (assoc 94 ed1))))
                               (list (cons 72 kn))
                               (list (cons 73 cn))
                               knot-list
                               controlpoint-list
                      )
                )
  (setq ed1 (member (assoc 10 ed1) ed1))
                (setq lwp nil)
               )
             ) ; end cond
           ) ; end repeat noe
           (if lwp (progn
             (setq en1 (entnext lastent))
             (setq ss (ssadd))
             (ssadd en1 ss)
             (while (setq en2 (entnext en1))
               (ssadd en2 ss)
               (setq en1 en2)
             )
      (if (= (getvar “peditaccept”) 1)
               (command “_.pedit” (entlast) “_J” ss “” “”)
        (command “_.pedit” (entlast) “_Y” “_J” ss “” “”)
      )
          ))
          ) ; end t
        ) ; end cond
; Tries to get the area on islands but it’s not clear how to know if an island is filled or not
; and if it should be substracted or added to the total area.
; (if (or (= bot 0) (= (boole 1 bot 1) 1)) (setq area (+ area (areaOfObject (entlast)))))
; (if (and (/= hst 1) (/= bot 0) (= (boole 1 bot 1) 0)) (setq area (- area (areaOfObject (entlast)))))
; (princ “n”) (princ bot) (princ “n”) (princ hst) (princ “n”)
; (princ (areaOfObject (entlast)))
      ) ; end repeat loops1
      (if (= loops1 1) (setq area (+ area (areaOfObject (entlast)))) (setq bMoreLoops T))
      (setq i (1+ i))
    )
   )
  )
  (if (and area (not bMoreLoops)) (progn
    (princ “nTotal Area = “)
    (princ area)
(command “_.text” (getpoint) “” “” (rtos (/ area 1.) 2 2))
  ))
  (restore)
  (princ)
);DEFUN
  • 0
  • 2 2 답변
  • 53 조회
공유
  • Facebook

    관련 있는 질문들

    • 캐디안으로 도면을 열때 한글이 ???로 표시되는 문제
    • CADian Lisp
    • 캐디안에서 렌더링 기능이 지원되나요?
    • 동적블록 신축에서 길이를 늘릴때 최종 길이를 입력 또는 늘려야 하는 차이만큼의 길이를 입력

    2 답변

    • 작성 순
    • 최신 순
    • 공감 순
    1. aalan
    2. 진미채 Lv.0
      2022-05-25T14:18:49+09:00답변 등록 답변 등록 일시 2022-05-25 2:18 pm

      저도 궁금하네요 ㅠㅠ

      • 0
      • 공유
        공유
        • 공유 Facebook
        • 공유 Twitter
    3. HYU95 Lv.0
      2022-05-25T15:06:03+09:00답변 등록 답변 등록 일시 2022-05-25 3:06 pm

      emoticon

      • 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