비밀번호를 잊으셨나요?

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

계정이 있나요? 로그인

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 193788
다음
박선영
박선영Lv.0
등록일: 2025-01-192025-01-19T02:45:11+09:00 2025-01-19T02:45:11+09:00카테고리: 자유질문

길이별 블럭을 선에 조립하는 리습인데 뭐가 잘못된걸까요

기존에 사용하던 리습에서 다른 타입의 블럭을 만들어서 추가적으로 리습을 만들었는데 그뒤로 오류: 잘못된 인수 유형: stringp nil이란 문구가 뜨고 안되는데 뭐가 잘못된건지 모르겠어요

기존에 사용하던 리습이 될때도 있고 어떤땐 안되고 작업할때 많이 쓰는 리습인데 안되니 너무 불편해요

도움주실수 있을까요?

(defun c:fg(/ *error* ks_variant->list ks_pt_sort dst
acDoc acSpc obj len ptLst ro L L2 len2 lnss blss n wid obj pt blnm rep lst hp1 tmp)(vl-load-com)

(defun *error* (msg)(princ “nerror:”)(princ msg)
(setvar ‘nomutt 0)
(princ)
)

(defun ks_variant->list (val)
(vlax-safearray->list(vlax-variant-value val))
)

(defun ks_pt_sort(L)
(vl-sort(vl-sort L ‘(lambda (a b)(< (car a)(car b)))) ‘(lambda (a b)(< (cadr a)(cadr b))))
)

(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq acSpc (vlax-get acDoc (if (= 1 (getvar ‘CVPORT)) ‘paperspace ‘modelspace)))
(setvar ‘nomutt 1)
(princ “n기준선을 선택하세요”)
(setq lnss(ssget “:S:E” (list(cons 0 “LINE”))))
(if lnss
(progn
(setvar ‘nomutt 0)
(setq hp1(getpoint “n헤드방향 선택:”))
(setq obj(vlax-ename->vla-object(ssname lnss 0)))
(setq p1(ks_variant->list (vla-get-startpoint obj)))
(setq p2(ks_variant->list (vla-get-endpoint obj)))
(setq len (- (vla-get-length obj) 650)) ;라인 전체길이에서 헤드최소 사이즈를 뺍니다~!!
(if(< (distance p1 hp1)(distance p2 hp1))
(progn (setq ro (angle p2 p1) tmp p1 p1 p2 p2 tmp))
(setq ro (angle p1 p2))
)

(setvar ‘nomutt 0)

(setq L ‘(“ST YJ-0.215” “ST YJ-0.645” “ST YJ12-1.075” “ST YJ12-2.365” “ST YJ12-4.085”
“ST YJ12-6.235” “ST YJ12-8.385” “ST YJ12-10.535” “ST YJ-0.323”)

) ;; 블럭이름리스트 위에처럼 따옴표로 감싸서 블럭이름 계속추가 가능합니다 헤더(잭)은 넣지 마세요

(foreach x L
(setq pos(vl-string-position (ascii “-“) x nil T))
(setq num(* 1000(atof (substr x (+ 2 pos)))))
(setq Lst(cons (list num x)Lst))
)

(setq Lst(vl-sort Lst ‘(lambda (a b)(> (car a)(car b)))))

(setq n 0 L2 nil)

(foreach e Lst
(setq len2 (car e))
(while (< len2 len)
(setq n(1+ n))
(setq len2 (+ len2 (car e)))
)

(setq len (- len (- len2 (car e))))
(setq L2(append L2(list(append e (list n)))))
(setq n 0 )
)

(foreach e L2
(setq blnm(cadr e))
(setq rep(caddr e))
(repeat rep
(vlax-invoke acSpc ‘insertblock p1 blnm 1.0 1.0 1.0 ro)
(setq p1(polar p1 ro (car e)))
)
)

(setq dst (distance p1 p2))
(if (< 810 dst) ; 남은라인길이에 상관없이 헤드 최대크기에 맞춤
(setq p2(polar p2 (+ pi ro)(- dst 810)))
)

(vlax-invoke acSpc ‘insertblock p1 “단축식유압잭2” 1.0 1.0 1.0 ro)
(vlax-invoke acSpc ‘insertblock p2 “단축식유압잭1” 1.0 1.0 1.0 ro)
(vla-erase obj) ;선택한 라인을 없애는 구문입니다 필요없으시면 삭제하세요
)
)
(princ)

)

이게 기존에 쓰던 리습인데 여기서 라인 전체길이에 맞게 블럭이 들어가야 해서 단축식유압잭 문구를 지우고 블럭명을 새롭게 지정해줬는데 안되네요

(defun c:fw(/ *error* ks_variant->list ks_pt_sort dst
acDoc acSpc obj len ptLst ro L L2 len2 lnss blss n wid obj pt blnm rep lst hp1 tmp)(vl-load-com)

(defun *error* (msg)(princ “nerror:”)(princ msg)
(setvar ‘nomutt 0)
(princ)
)

(defun ks_variant->list (val)
(vlax-safearray->list(vlax-variant-value val))
)

(defun ks_pt_sort(L)
(vl-sort(vl-sort L ‘(lambda (a b)(< (car a)(car b)))) ‘(lambda (a b)(< (cadr a)(cadr b))))
)

(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
(setq acSpc (vlax-get acDoc (if (= 1 (getvar ‘CVPORT)) ‘paperspace ‘modelspace)))
(setvar ‘nomutt 1)
(princ “n기준선을 선택하세요”)
(setq lnss(ssget “:S:E” (list(cons 0 “LINE”))))
(if lnss
(progn
(setvar ‘nomutt 0)
(setq hp1(getpoint “n방향 선택:”))
(setq obj(vlax-ename->vla-object(ssname lnss 0)))
(setq p1(ks_variant->list (vla-get-startpoint obj)))
(setq p2(ks_variant->list (vla-get-endpoint obj)))
(if(< (distance p1 hp1)(distance p2 hp1))
(progn (setq ro (angle p2 p1) tmp p1 p1 p2 p2 tmp))
(setq ro (angle p1 p2))
)

(setvar ‘nomutt 0)

(setq L ‘(“WA YJ-0.215” “WA YJ-0.645” “WA YJ12-1.075” “WA YJ12-2.365” “WA YJ12-4.085”
“WA YJ12-6.235” “WA YJ12-8.385” “WA YJ12-10.535” “WA YJ-0.323”)

) ;; 블럭이름리스트 위에처럼 따옴표로 감싸서 블럭이름 계속추가 가능합니다

(foreach x L
(setq pos(vl-string-position (ascii “-“) x nil T))
(setq num(* 1000(atof (substr x (+ 2 pos)))))
(setq Lst(cons (list num x)Lst))
)

(setq Lst(vl-sort Lst ‘(lambda (a b)(> (car a)(car b)))))

(setq n 0 L2 nil)

(foreach e Lst
(setq len2 (car e))
(while (< len2 len)
(setq n(1+ n))
(setq len2 (+ len2 (car e)))
)

(setq len (- len (- len2 (car e))))
(setq L2(append L2(list(append e (list n)))))
(setq n 0 )
)

(foreach e L2
(setq blnm(cadr e))
(setq rep(caddr e))
(repeat rep
(vlax-invoke acSpc ‘insertblock p1 blnm 1.0 1.0 1.0 ro)
(setq p1(polar p1 ro (car e)))
)
)

(setq dst (distance p1 p2))
(if (< 0 dst) ; 남은라인길이에 상관없이 최대크기에 맞춤
(setq p2(polar p2 (+ pi ro)(- dst 0)))
)

(vla-erase obj) ;선택한 라인을 없애는 구문입니다 필요없으시면 삭제하세요
)
)
(princ)

)

이렇게 바꾼건데 뭐가 부족하거나 잘못된걸까요?

 

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

    관련 있는 질문들

    • 원치수 왼쪽 지시선ㅜ
    • 노트북 추천 부탁 드립니다.
    • 반지름 치수선
    • 슬롯트 홀 이런 표기 방법은 또 처음이네요 ㄷㄷㄷ

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

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

    비밀번호를 잊으셨나요?

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

    Sidebar

    질문하기
    공지사항

    • 국산 CAD ‘캐디안 2025’ 출시 사전 예약 진행 2024-09-27

    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을 입력하세요

    또는 기존의 콘텐츠에 링크

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