VBA에서 블록 속성 보기

  • Thread starter Thread starter Crx76
  • Start date Start date

Crx76

Guest
모든 인사 :)
나는 내 문제가 짧습니다. .
.dwg 파일 내부 나는 다른 동적 블록을 삽입하고 속성의 수를 포함하지.

예:
블록 이름: 인기 카테고리 상표 1st 특성:이름 * 모델 번호:50-100 원상표 제 2 특성: 모델 번호:60명상표 3rd 특성:이름 * 모델 번호:100명이름 blocco: 뚱 베어 상표 1st 특성:이름 * 모델 번호:20명상표 제 2 특성: 모델 번호:30 분상표 3rd 특성:이름 * 모델 번호:100명등.

나는 다음과 같은 구조화 된 형태를 만들려면 :

textbox1 = 이름 차단
textbox2 = 속성 값 이름 *textbox3 = 속성 값 textbox4 = 속성 값 이름 *commandbutton1 = 다음 블록으로 이동
commandbutton2 = 닫기

이제 나는 단지 textbox1 블록 이름에 전달할 수 있지만, 값을 전달할 수 없습니다. 이름 * 이름 * 각 텍스트 상자에
(문제 버튼 없음)

나는 내가 어떻게 getattributes를 사용해야하는지 이해 한 Autocad vba와 함께 "플레이"를 시작했다. 그러나 솔직히 나는 그것을 적용 할 수 없습니다 :

나에게 도움이되는 사람들에게 감사하십시오 :)

·
autocad 기계적인 2007년을 사용하십시오 (나는 2009년에 곧 통과할 것입니다)
 
나는 모든 블록을 선택하고 속성을 추출하는이 routine를 사용합니다.

'-----모든 블록 선택-----
설정 sset = thisdrawing.selectionsets.add("selection")
filterdata(0) = "supbk"블록 이름!!
필터 타입(0) = 2
filterdata(1) = "인출"
필터 타입(1) = 0
필터타입, 필터데이터
sset.count가 있다면
k = 0 에 sset.count - 1
attrib = sset.item (k).getattributes
설정 objatt = attrib(1)
suptxt = objatt.textstring에 대 한
설정 objatt = attrib(2)
나이 = val (objatt.textstring)
합계(aggreg + 1) = 합계(aggreg + 1) + cdec(suptxt) 총 합계
이름 *
끝 면
thisdrawing.selectionsets.item("selection"). 기타 제품

속성에 삽입 된 값을 계산해야하지만이 부분을 점프해야합니다 (aggreg).
'suptxt'의 값은 양식에 보고해야 하는 것입니다.
 
감사합니다 lyon54,
당신의 일상 (내 필요에 대 한 적절 한 검토) 나를 이해 하는 방법을 이해 하는 getattributes 방법 다양 한 속성 값을 전달 하는 각각의 textbox:)
... 이제 ... 내 dwg에서 나는 동적 블록을 가지고 있으며 블록의 "동역학"을 모든 ok하지만 블록에 상호 작용 할 때 나는 같은 변경 이름을 전달합니다. 예를 들어 인기 카테고리 한국어 모델 번호: U48 어떻게이 상황을 우회할 수 있습니까?

감사 :)
 
나는 약간 거칠게 될 수있는 방법에 문제가 해결했다 :p .... 중요한 것은 여전히 내가 할 일을하는 것입니다 ... :
 
나는 약간 거칠게 될 수있는 방법에 문제가 해결했다 :p .... 중요한 것은 여전히 내가 할 일을하는 것입니다 ... :
어쩌면 당신이 그것을 해결하는 방법을 설명하고 싶다면 ... ;)
다른 사람들에게도 유용 할 수 있습니다!
 
나는...

주의:
Boltobox에서 로드 된 양식을 활성화함으로써 dwg에서 존재하는 모든 블록의 이름을 생성하고, combobox에서 블록 이름을 선택하면 같은 텍스트 상자에 입력되어 디자인의 모든 개체를 포함하는 선택 세트를 만들고 선택 설정에서 블록의 다양한 위치와 목록 상자에서로드를 설정하면 키보드로 스크롤 할 수 있습니다.

코드를 보여주는 거의 쉬운....
개인 하위 userform_activate()
dim i, j, btot as 정수
dim bnam 로 문자열

비트 = thisdrawing.blocks.count

i = 0 에 btot - 1
bnam = thisdrawing.blocks.item(i).name을 호출합니다.
if not mid$(bnam, 1, 1) = "*" and bnam <> "genaxeh" then combobox1.additem bnam
다음 것 i

끝 이하
다음 행사:
프라이빗 서브 combobox1_change()
<<<<<<<<>
dim blockref로 acadblockreference
dim varattributes로 변형
integer로 dim intattribcount
acadselectionset로 디엠 뉴스

' cancella 라 선택 설정 se esiste
오류는 다음을 다시 시작합니다.
if not isnull(thisdrawing.selectionsets.item("ss")) 그런 다음
설정된 뉴스 = thisdrawing.selectionsets.item("ss")
뉴스&공지
끝 면

리스트박스1.clear

텍스트 박스6.value = 0
textbox1.value = 콤보 박스1.value

설정된 뉴스 = thisdrawing.selectionsets.add("ss")
뉴스. 선택 acselectionsetall


newss.count > 뉴스 > 0 다음
나는 = 1
₢ 킹

x = 0 에 news.count - 1

뉴스.item (o)

news.item(o).objectname = "acdbblockreference" 의 경우

if news.item(o). effectivename = textbox1.value 그 후
₢ 킹

varattributes = 뉴스.item (o).getattributes

intattribcount = lbound(varattributes) 에 ubound(varattributes) 에 대한

varattributes (intattribcount).tagstring = "1sttag의 이름"다음
textbox2.value = varattributes (intattribcount).textstring
varattributes (intattribcount).tagstring = "2°tag의 이름"다음
textbox3.value = varattributes (intattribcount).textstring
·등.·
끝 면

다음 intattribcount

listbox1.additem (오)
₢ 킹
otherif news.item(o). effectivename <> textbox1.value 의 경우
₢ 킹
끝 면
otherif news.item(o).objectname <> "acdbblockreference"다음
₢ 킹
끝 면
다음 x
끝 면

textbox6.value = 나는 - 1

끝 이하
이벤트에 마지막으로:
개인 하위 목록box1_change()

o = 목록 상자1.value
if listbox1.listcount = 0 다음
출구 sub
끝 면

텍스트 박스2.clear
텍스트 박스3.clear

설정된 뉴스 = thisdrawing.selectionsets("s")

blockref 설정 = newss.item(o)

blockref. effectivename = textbox1.value 의 경우


난이도 = blockref.getattributes
'모든 속성 확인
intattribcount = lbound(varattributes) 에 ubound(varattributes) 에 대한

varattributes (intattribcount).tagstring = "1sttag의 이름"다음
textbox2.value = varattributes (intattribcount).textstring
varattributes (intattribcount).tagstring = "2°tag의 이름"다음
textbox3.value = varattributes (intattribcount).textstring
·등.·
끝 면

다음 intattribcount
끝 면
끝 이하
그것은 약간의 스노우와 "brutal" 견적 요청 ....당신이 제안을 잘 올 경우 :d

이제 당신을 위한 질문 ... 내가 할 수 있듯이 선택한 블록에서 급상승하려면 블록을 선택하면 :p?? ?
 
Last edited:
어떻게 말했다 ... 나는 꽤 쉽게 해결 : ROLLeyes :
해결책을 주지 않는 이것의:d

명령: 급상승
창 각도를 지정하고 스케일 인자(nx 또는 nxp)를 입력하거나[Tutto/Centrato/Dinamico/Estensioni/Precedente/scAla/Finestra/기타 제품· <tempo reale="">: 오</tempo>
 
안녕하세요.
죄송합니다 lyon54, 당신이 여기에 쓴 필터에 블록의 이름을 추가하려면, 당신은 무엇을 작성해야?
나는 몇 가지 테스트를했다, 하지만 필터는 나에게 얼마나 많은 블록을 항상 총 디자인.

감사합니다!
p.s. 내가 어디에 기억하지 않기 때문에 내 예제를 transcribe에 나를 요청하지 마십시오.
Ghirosoft의
 
안녕하세요.
죄송합니다 lyon54, 당신이 여기에 쓴 필터에 블록의 이름을 추가하려면, 당신은 무엇을 작성해야?
나는 몇 가지 테스트를했다, 하지만 필터는 나에게 얼마나 많은 블록을 항상 총 디자인.

감사합니다!
p.s. 내가 어디에 기억하지 않기 때문에 내 예제를 transcribe에 나를 요청하지 마십시오.
Ghirosoft의
설정 sset2 = thisdrawing.selectionsets.add("selezione")

dim filtertype(1) 정수
dim filterdata(1) 변형

필터 타입(0) = 0
filterdata(0) = "인출"
필터 타입(1) = 2
filterdata(1) = "name_block"의 경우


이름에 주의. 자본, Minuscole 등. sset2.select acselectionsetall, , 필터 타입, 필터 데이터
 
Ghirosoft 소개
filterdata(0) = "supbk"를
견적은 블록의 이름입니다.
내가 표시 한 선택의 유형 "scandisce" 모든 디자인에서, 다음 그 이름과 모든 블록을 찾습니다.
화면에서 antita를 선택 할 수있는 "selectonscreen"으로 "acselectionsetall"을 변경해야합니다.
나는 당신의 문제를 잘 이해합니다.
죄송합니다.
이름 *
 
Ghirosoft 소개
내 빠른 대답 후, 나는 당신이 나에게 물었다고 생각했다.
그런 다음: 블록이 하나 이상의 경우 (다른 이름), 또는 당신이 블록의 이름을 변경하는 각 시간을 반복, 또는 필터에 관해서, 시작 및 - 끝과 필터 데이터 / 필터 유형의 번호를 증가.
나는 더 많은 블록을 선택 할 필요가 없기 때문에 시도하지 않았지만 설치 CD에 pdf로보고 할 때 2000 버전의 Vba 매뉴얼에서 예제를 기억합니다.
이제 그들은 신사가되고, 우리는 서로에게 준비해야하지만, 어쩌면 도움이 뭔가 찾을 수 있습니다.
사무실로 돌아갈 때 곧 관심이 있다면 (sob!) 나는 무언가를 발견하면.
웃음
 
Ghirosoft 소개
filterdata(0) = "supbk"를
견적은 블록의 이름입니다.
내가 표시 한 선택의 유형 "scandisce" 모든 디자인에서, 다음 그 이름과 모든 블록을 찾습니다.
화면에서 antita를 선택 할 수있는 "selectonscreen"으로 "acselectionsetall"을 변경해야합니다.
나는 당신의 문제를 잘 이해합니다.
죄송합니다.
이름 *
그러나 없이 필터 타입(1) = 2 이름 필터에 작동하지 않습니다


내 게시물에서 이미 지정 된 것
 

Forum statistics

Threads
58,191
Messages
495,938
Members
103,104
Latest member
FabioFrontini

Members online

No members online now.

Back
Top