현재 다른 폴리 라인을 따라 실행되는 두 블록 (first_block, second_block) 사이에서 폴리 라인을 실행하려고 시도 중입니다. 삽입 기능의 동작이 끝날 때 called는 주석 블록 (cable_name_tag)에 시작 및 끝 블록의 세부 정보를 채 웁니다.폴리 라인 선택시 Autocad 오류 "잘못된 인수 유형 : lselsetp nil"
이 폴리 라인은 다른 블록을 가로 지르고 기본 폴리 라인 (cable_ducting)이있는 평행선으로 실행해야하는 경우가 있으므로 공간이 제한적일 수 있으므로 주석을 삭제하기 위해 폴리선의 해당 부분을 선택하는 옵션이 필요합니다.
내가 second_block을 주석 처리하고 harcoded 값을 제공하면 ssget 함수가 문제없이 작동하므로, 해당 코드에서 first_block 및 second_block의 구문이나 처리에 문제가있는 것이 합리적이라고 확신합니다.
(defun c:cable()
(vl-load-com)
(setvar "clayer" "cable layer")
(setvar "celtype" "bylayer")
(setvar "osmode" 515)
(command "_.pline"
(getpoint))
(while (> (getvar ' cmdactive) 0)
(command pause)
(princ "\npress enter to finish:"))
(setq elst
(entsel "\nselect cable segment: "))
(setq ename
(car elst))
(setq pt
(cadr elst))
(setq annopt pt)
(setq pt
(vlax-curve-getclosestpointto ename pt))
(setq param
(vlax-curve-getparamatpoint ename pt))
(setq preparam
(fix param))
(setq postparam
(1+ preparam))
(list (setq pt1
(vlax-curve-getpointatparam ename preparam))
(setq pt2
(vlax-curve-getpointatparam ename postparam)))
(setq cable
(entlast))
(setq cable_start
(vlax-curve-getstartparam cable))
(setq cable_start_point
(vlax-curve-getstartpoint cable))
(setq cable_end_point
(vlax-curve-getendpoint cable))
(setq cable_end
(angtos (angle '(0 0)
(vlax-curve-getfirstderiv cable 0.0))))
(setq first_block
(ssget "_c" cable_start_point cable_end_point
(list (cons 0 "insert")
(cons 2 "first_block"))))
(setq second_block
(ssget "_c" cable_start_point cable_end_point
(list (cons 0 "insert")
(cons 2 "second_block"))))
(setq end_cable
(ssname second_block 0))
(setq start_cable
(ssname first_block 0))
(setq $end_cable
(vla-get-textstring
(cadr (vlax-safearray->list
(variant-value
(vla-getattributes
(vlax-ename->vla-object end_cable)))))))
(setq $start_cable
(vla-get-textstring
(cadr (vlax-safearray->list
(variant-value
(vla-getattributes
(vlax-ename->vla-object start_cable)))))))
(setq cable_name
(vlax-curve-getendparam cable))
(command ; insert cable param
"-insert"
"cable_name_tag"
annopt
"1"
"1"
cable_angle
cable_name
$start_cable
$end_cable
"144"
cable_length))
나는이 코너에 머물렀다. 누구든지 제공 할 수있는 도움, 조언 또는 조언을 주시면 감사하겠습니다.
감사합니다.