ObjectDBX를 사용하여 AutoLISP로 모든 블록에서 모든 속성을 삭제하는 방법

디 네시 빌라스 파와 르

AutoLISP ObjectDBX 방법을 사용하여 도면 내부 블록의 모든 속성을 삭제하고 싶습니다.

아래 프로그램은 잘 작동합니다. 도면 내 모든 블록의 속성을 삭제하지만 블록 편집기에서이 블록을 편집 할 때 모든 속성이 여전히 존재하는 것을 볼 수 있습니다.

블록 정의에서이 속성을 삭제해야한다고 생각합니다.

;[dwgin]--input drawing file
;[dwgout]-- Output drawing fath with name
;function 'LM:GetDocumentObject' lee mac function to open drawing in ObjectDBX method
(defun DBXAttDelete ( dwgin dwgout / doc flg val )
    (if (setq doc (LM:GetDocumentObject dwgin))
        (progn
            (vlax-for lyt (vla-get-layouts doc)
                (vlax-for obj (vla-get-block lyt)
                    (if (and (= "AcDbBlockReference" (vla-get-objectname obj))
                             (= :vlax-true (vla-get-hasattributes obj))
                        )
                        (foreach att (vlax-invoke obj 'getattributes)              

                    (if (vl-catch-all-error-p (setq err (vl-catch-all-apply 'vla-delete (list att))))
                      (princ (strcat "\nERROR: " (vl-catch-all-error-message err)))

                    )
                        )
                    )
                )
            )
           (vla-saveas doc dwgout)
            (vlax-release-object doc)
            flg
        )
        (prompt (strcat "\nThe drawing \"" dwgin "\" was not found or could not be accessed."))
    )
)

이 프로그램을 개선 / 수정해야하는 부분을 찾는 데 도움을 줄 수 있습니까?

리 맥

블록 정의는 기본적으로 블록에 대한 "청사진"이고 각 블록 참조는 도면의 특정 위치, 축척, 회전 및 방향에서 블록 정의 내에서 발견 된 객체를 표시하는 인스턴스입니다.

이 특성은 속성 정의 차단 내에 정의 하고, 대응하는 속성 참조 각 블록에 부착 참조 . 그런 다음 이러한 속성 참조는 도면에 삽입 된 각 블록 참조에 대해 서로 다른 텍스트 컨텐츠를 보유 할 수 있습니다.

흥미롭게도 속성 참조는 블록 정의와 관계없이 프로그래밍 방식으로 블록 참조에 첨부 될 수 있지만 표준 기본 프런트 엔드를 사용하여 AutoCAD를 작동 할 때는 허용되지 않습니다.

따라서 도면에서 모든 속성을 제거하려면 모든 블록 참조와 연관된 속성 참조를 삭제하고 해당 블록 정의에서 속성 정의를 삭제해야합니다.

삭제 작업을 수행하기 전에 잠긴 레이어의 잠금을 해제하고이 작업 후에 이전에 잠긴 레이어를 다시 잠글 수도 있습니다.

배치는 단지 블록 유형일 뿐이므로 블록 집합을 반복하면 모든 배치, 블록 및 내포 된 블록 (외부 참조 제외)을 처리하기에 충분합니다.

(defun DBXAttDelete ( dwgin dwgout / doc lck )
    (if (setq doc (LM:GetDocumentObject dwgin))
        (progn
            (vlax-for lay (vla-get-layers doc)
                (if (= :vlax-true (vla-get-lock lay))
                    (progn
                        (setq lck (cons lay lck))
                        (vla-put-lock lay :vlax-false)
                    )
                )
            )
            (vlax-for blk (vla-get-blocks doc)
                (if (= :vlax-false (vla-get-isxref blk))
                    (vlax-for obj blk
                        (cond
                            (   (= "AcDbBlockReference" (vla-get-objectname obj))
                                (if (= :vlax-true (vla-get-hasattributes obj))
                                    (foreach att (vlax-invoke obj 'getattributes)
                                        (vla-delete att)
                                    )
                                )
                            )
                            (   (= "AcDbAttributeDefinition" (vla-get-objectname obj))
                                (vla-delete obj)
                            )
                        )
                    )
                )
            )
            (foreach lay lck
                (vla-put-lock lay :vlax-true)
            )
            (vla-saveas doc dwgout)
            (vlax-release-object doc)
            t
        )
        (prompt (strcat "\nThe drawing \"" dwgin "\" was not found or could not be accessed."))
    )
)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

부모 ID로 목록에서 모든 항목을 삭제하는 방법

분류에서Dev

bash에서 wget 메소드 삭제를 사용하여 모든 파일을 삭제하는 방법

분류에서Dev

Java에서 xpath를 사용하여 특정 속성에서 모든 속성 값을 선택하는 방법

분류에서Dev

VBA를 사용하여 통합 문서의 모든 시트에서 첫 번째 열을 삭제하는 방법

분류에서Dev

속성을 사용하여 모든 수준에서 노드의 부모를 선택하는 방법

분류에서Dev

헤드리스 모드에서 bq cli를 사용하여 테이블을 강제로 삭제하는 방법

분류에서Dev

Regex를 사용하여 메모장에서 모든 것을 한 줄로 이동하는 방법 ++

분류에서Dev

C에서 경로를 정규화하는 방법 (반복 된 모든 '/'삭제)

분류에서Dev

selinium python을 사용하여 목록에 유사한 텍스트로 모든 ID를 삽입하는 방법

분류에서Dev

jquery를 사용하여 클릭 한 모든 버튼에서 데이터 속성을 가져 오는 방법

분류에서Dev

couchdb에서 모든 문서를 검색하고 파이썬을 사용하여 CSV로 변환하는 방법

분류에서Dev

beatifulsoup을 사용하여 웹 사이트에서 모든 행 데이터를 다운로드하는 방법

분류에서Dev

itext를 사용하여 기존 pdf에서 확대 / 축소를 상속하도록 모든 북마크 속성을 변경하는 방법

분류에서Dev

Ruby에서 모든 파일을 삭제하는 방법

분류에서Dev

Python의 목록 목록에서 모든 요소를 삭제하는 방법

분류에서Dev

모든 항목을 삭제 한 후 목록보기를 다시로드하는 방법은 무엇입니까?

분류에서Dev

lxml을 사용하여 모든 요소에서 xmlns를 확인하는 방법

분류에서Dev

데이터베이스의 모든 테이블에서 모든 레코드를 삭제하는 방법

분류에서Dev

CodeIgniter 및 PHPExcel을 사용하여 ajax 응답에서 파일 다운로드를 처리하는 모든 방법

분류에서Dev

모든 모델에서 모든 연관을로드하는 방법

분류에서Dev

Java를 사용하여 요소에서 모든 속성 제거

분류에서Dev

C #-이 API 경로`/ api / shelters / <id> / animals`를 사용하여 ID 보호소에서 선택한 모든 동물 목록을 제공하는 방법

분류에서Dev

모든 값을 수동으로 반복하는 대신 forEach를 사용하여 HTML 태그 안에 모든 개체의 값을 표시하는 방법

분류에서Dev

kdb : 테이블에서 모든 행을 삭제하는 가장 좋은 방법

분류에서Dev

Android의 Sqlite에서 모든 테이블을 삭제하는 방법

분류에서Dev

MySQL 테이블에서 모든 데이터를 삭제하고 새 데이터로 테이블을 채우는 방법

분류에서Dev

bash 스크립트에서 unix ed 편집기를 사용하여 마지막 줄을 제외한 모든 줄을 삭제하는 방법

분류에서Dev

Gradle을 사용하여 모든 모듈에 대한 공통 Android 속성을 정의하는 방법

분류에서Dev

Azure Api Management를 사용하여 모든 옵션 요청을 백엔드 서버로 전달하는 방법

Related 관련 기사

  1. 1

    부모 ID로 목록에서 모든 항목을 삭제하는 방법

  2. 2

    bash에서 wget 메소드 삭제를 사용하여 모든 파일을 삭제하는 방법

  3. 3

    Java에서 xpath를 사용하여 특정 속성에서 모든 속성 값을 선택하는 방법

  4. 4

    VBA를 사용하여 통합 문서의 모든 시트에서 첫 번째 열을 삭제하는 방법

  5. 5

    속성을 사용하여 모든 수준에서 노드의 부모를 선택하는 방법

  6. 6

    헤드리스 모드에서 bq cli를 사용하여 테이블을 강제로 삭제하는 방법

  7. 7

    Regex를 사용하여 메모장에서 모든 것을 한 줄로 이동하는 방법 ++

  8. 8

    C에서 경로를 정규화하는 방법 (반복 된 모든 '/'삭제)

  9. 9

    selinium python을 사용하여 목록에 유사한 텍스트로 모든 ID를 삽입하는 방법

  10. 10

    jquery를 사용하여 클릭 한 모든 버튼에서 데이터 속성을 가져 오는 방법

  11. 11

    couchdb에서 모든 문서를 검색하고 파이썬을 사용하여 CSV로 변환하는 방법

  12. 12

    beatifulsoup을 사용하여 웹 사이트에서 모든 행 데이터를 다운로드하는 방법

  13. 13

    itext를 사용하여 기존 pdf에서 확대 / 축소를 상속하도록 모든 북마크 속성을 변경하는 방법

  14. 14

    Ruby에서 모든 파일을 삭제하는 방법

  15. 15

    Python의 목록 목록에서 모든 요소를 삭제하는 방법

  16. 16

    모든 항목을 삭제 한 후 목록보기를 다시로드하는 방법은 무엇입니까?

  17. 17

    lxml을 사용하여 모든 요소에서 xmlns를 확인하는 방법

  18. 18

    데이터베이스의 모든 테이블에서 모든 레코드를 삭제하는 방법

  19. 19

    CodeIgniter 및 PHPExcel을 사용하여 ajax 응답에서 파일 다운로드를 처리하는 모든 방법

  20. 20

    모든 모델에서 모든 연관을로드하는 방법

  21. 21

    Java를 사용하여 요소에서 모든 속성 제거

  22. 22

    C #-이 API 경로`/ api / shelters / <id> / animals`를 사용하여 ID 보호소에서 선택한 모든 동물 목록을 제공하는 방법

  23. 23

    모든 값을 수동으로 반복하는 대신 forEach를 사용하여 HTML 태그 안에 모든 개체의 값을 표시하는 방법

  24. 24

    kdb : 테이블에서 모든 행을 삭제하는 가장 좋은 방법

  25. 25

    Android의 Sqlite에서 모든 테이블을 삭제하는 방법

  26. 26

    MySQL 테이블에서 모든 데이터를 삭제하고 새 데이터로 테이블을 채우는 방법

  27. 27

    bash 스크립트에서 unix ed 편집기를 사용하여 마지막 줄을 제외한 모든 줄을 삭제하는 방법

  28. 28

    Gradle을 사용하여 모든 모듈에 대한 공통 Android 속성을 정의하는 방법

  29. 29

    Azure Api Management를 사용하여 모든 옵션 요청을 백엔드 서버로 전달하는 방법

뜨겁다태그

보관