Excel'den VBA aracılığıyla açın belirli bir dwggg

  • Konuyu başlatan Konuyu başlatan blintz
  • Başlangıç tarihi Başlangıç tarihi

blintz

Guest
Herkese merhaba
Her iki program için ağ üzerinde birkaç kod var.
Bundan sonra ... Soru soru
Autocad ile mükemmel diyaloglar sağlayan bir program yaptım
Birkaç kelime içinde veriler (blolar ve metin) çizime aktarılır.
Ben, açık otocad ile belirli bir dwg açmak zorunda olduğumu söyleyebilirim, aksi takdirde msgbox
 
Come posso dire a vba che mi deve aprire uno specifico dwg' Alıntı:
Üzgünüm
Daha net olmak istedim ve üstün (vba) belirli bir dosya açmak zorunda
Şu anda bu kodu kullanıyorum:
Kod:
subblocks()

"-!"
'Teklifleri kullanarak otomatik bloklar - ekleme noktası, blok adı / tam yol, ölçek faktörleri, rotasyon açısı - mükemmellikten.
“ Blok adı veya blok yolu zaten var olması gerekmez, aksi takdirde hiçbir şey eklemez.
“ kod geç bağlayıcı kullanır, bu yüzden dış otomatik (tip) kütüphaneye referans gerekmez.
“Bu kodu çalıştırmadan önce bilgisayarınızın üzerine kurulu olması gerektiğini söylemeye gerek yok.

“Yazar: christos samaras
Tarih: 21.04.2019
"e-mail: [email protected]
"site: http://www.myengineeringworld.net
"-!"

“ gerekli değişkenleri gösterir.
dim acadapp as object
dim acaddoc as object
dim acadblock as object
dim lastrow as long
dim i as long
dim addionpoint(0 to 2) çift olarak
dim blockname as string
dim blok boyutu ölçek faktör olarak
dim rotasyonu çift olarak

“ koordinatlar sayfasını etkinleştirin ve son sırayı bulun.
çarşaflar ("attributes")
.activate
Sonrow = .cells (.rows.count, "i").end(xlup). Sıra sıra sıra sıra
Sonunda ile

“En az bir çember için koordinatlar varsa kontrol edin.
Eğer sonrow < 5 sonra
msgbox "uygunluk noktası için koordinat yok!", vb.
çıkış alt alt alt
Sonunda, eğer sona erirse

" autocad uygulaması açıksa kontrol edin. Eğer açılmamışsa yeni bir örnek yaratır ve görünür hale getirir.
Hatada bir sonraki sefere devam ediyor
acadapp = getobject (, "autocad.application")
Eğer acadapp bir şey değilse o zaman
acadapp = createobject ("autocad.application")
acadapp.visible = true
Sonunda, eğer sona erirse

'check (again) eğer otocad bir nesne varsa.
Eğer acadapp bir şey değilse o zaman
msgbox "sorry, otocad'a başlamak imkansızdı!", vb.
çıkış alt alt alt
Sonunda, eğer sona erirse
Hata goto 0

“ Aktif bir çizim yeni bir tane yaratmıyorsa.
Hatada bir sonraki sefere devam ediyor
acaddoc = acadapp.activedocument
Eğer acaddoc bir şey değilse o zaman
acaddoc = acadapp.documents.add
Sonunda, eğer sona erirse
Hata goto 0

Aktif alan kağıt alanıysa ve onu modellemek için değiştirir.
Eğer acaddoc.activespace = 0 sonra '0 = erken bağlayıcılık alanı
acaddoc.activespace = 1 '1 = erken bağlayıcılık alanı
Sonunda, eğer sona erirse

Hatada bir sonraki sefere devam ediyor
“Tüm satırlar boyunca ve otocaddaki ilgili blokları ekleyin.
çarşaflar ("attributes")
i = 5 to lastrow
" Blok adını girin.
Blok adı = .range("l" & i). değer değeri değer değeri
“Eğer blok adı boş değilse, bloğu ekleyin.
Eğer blok adı <> vsnullstring sonra
"Katılım noktası.
Addionpoint = **** .range("i & i). değer değeri değer değeri
Addionpoint (1) = .range("j" & i). değer değeri değer değeri
Addionpoint(2) = .range("k" & i). değer değeri değer değeri
“ Seçmeli parametrelere dikkat edin.
blokscale.x = 1
blokscale.y = 1
blokscale.z = 1
Döndürme = 0
Seçmeli parametreler (eğer ilgili aralıklarda değerler varsa).
Eğer .range ("m" ve i.value <> vnullstring sonra blokscale.x = .range ("m" & i). değer değeri değer değeri
Eğer .range ("n" ve i).value <> / vnullstring then blockscale.y = .range ("n" & i). değer değeri değer değeri
Eğer .range ("o" & i).value <> / etcnullstring then blockscale.z = .range ("o" & i). değer değeri değer değeri
Eğer .range ("p" & i).value <> / vüllstring sonra döndürmek = .range("p" & i).value
“Doğal verileri kullanarak bloğu ekleyin (kesinlik noktası, blok adı, ölçek faktörleri ve rotasyon açısı).
" 0.0174532925, radians'a derece dönüştürmektir.
acadblock = acaddoc.modelspace.insertblock(insertionpoint, blockname, _
blokscale.x, blokscale.y, blokscale.z, rotasyon bok * 0.0174532925)
Sonunda, eğer sona erirse
Bir sonraki i
Sonunda ile
"Hareketi
" call updateattr
“Hazır alana kadar.
acadapp.zoomextents

“Haydileri serbest bırak.
Acadblock = Hiçbir şey
Acaddoc = Hiçbir şey
acadapp = hiçbir şey

Kullanıcıyı süreçle ilgili olarak ifade edin.
msgbox " Bloklar otomatik olarak yerleştirildi!", vb., "finished"

Sonunda alt alt
Umarım bir vs merhaba
 

Forum İstatistikleri

Konular
58,521
Mesajlar
499,056
Kullanıcılar
104,110
Son Üye
ChristianR

Çevrimiçi Üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst