ADeko Technologies http://www.adeko.com/phpBB3/ |
|
SDS altinda farkli dosyalarda cizim yapmak http://www.adeko.com/phpBB3/viewtopic.php?f=7&t=195 |
1. sayfa (Toplam 1 sayfa) |
Yazar: | efeguney [ 09 Oca 2004 17:17 ] |
Mesaj Başlığı: | SDS altinda farkli dosyalarda cizim yapmak |
İyigünler sds_comand(); i kullanmadan yeni bir cizim dosyasi nasil yaratabilirim. O cizim dosyasini nasil current cizim haline getirebilirim. .Dwg file'ını kullaniciya gostermeden nasil databaseine ulasabilirim. Gene kullaniciya gostermeden bu database de degisiklik yapma (entity ekleyip cikarma, layer islemleri , dictionary vs..) olanagim varmi? Yani ekrande ana cizim dosyasi gorunecek ama arka planda ben yeni cizim dosyalari olusturacagim ve icinde oynamalar yapacagim yada mevcut dosyalari acip benzer seyleri onlarda gerceklestirecegim. Tüm bu dediklerimi yapabilmem icin ne önerebilirsiniz. |
Yazar: | magnamana [ 09 Oca 2004 18:25 ] |
Mesaj Başlığı: | |
HWND hWndMain = sds_getmainhwnd(); HWND hWndClient = GetWindow(hWndMain, GW_CHILD); HWND hWndActive = (HWND)SendMessage(hWndClient, WM_MDIGETACTIVE, 0, 0L); if (!hWndActive) return RTERROR; SendMessage(hWndClient, WM_MDIACTIVATE, (WPARAM)rb->resval.rlong, 0L); Şeklinde mesaj atarak yeni bir pencere ve ve bu pencereyi active edebilirsiniz.. açılan view'ın database'ine gelince ise bunu direk olarak elde etmek için com(intelliCAD'in o andaki active penceresine istediğiniz ilaveleri yapabilirsiniz)yoluyla bağlanmanızı öneririm ki bu da sizin için pek iyi çözüm olmaz lakin kısa bir yol olur.. ve çok kolaydır.. Bir başka çözüm ise memoryde dxf database'ini tutmak ve istenildiği anda ekrana basmak. Genelde bu gibi sorunlar kesit hazırlamada kullanılır.. Sizde galiba statik hesaplarınızda kullanıcaksınız. içtenliklerimle ... Murat KAPLAN |
Yazar: | Destek/Support [ 09 Oca 2004 19:42 ] |
Mesaj Başlığı: | |
sds_entmake, sds_entmod ve sds_entdel'i hem nesne hem de table yaratmak için kullanabilirsiniz. Bu arada sds_name (long[2])'in ilk longu dwgnin, ikincisi ise nesnenin indexidir (yoksa tersi mi?) Destek/Support tarafından 09/01/2004 17:45:07 tarihinde değiştirildi |
Yazar: | magnamana [ 10 Oca 2004 07:45 ] |
Mesaj Başlığı: | |
sds_name ename sds_point pt1; sds_entsel("\nBir nesne seçiniz:",ename,pt1) ename[0]->Nesnenin database deki clasına ait pointerı ename[1]->Dwg nin pointer olarak adresi Yani siz bir nesnenin hangi pencereye ait olup olmadığını ayırmak için ename[1] 'inden yararlanabilirsiniz. sizin için nemli olan ename[0]'dır..... Süha beyin dediğine katılıyorum lakin siz bu yolu bildiğinizden dolayı pek bahsetmedim. Bana göre en güvenilir yol dxf motoru bulundurmak... şayet runtime'da nesneleriniz devamlı değişiyosaki bu sizin bilgilerinizi rem'de tutmanızı gerektirir.Bu birazcık sakınca doğurabilir. ARX çaşmalarımız başladı.DWG databasini de dışarı çıkartmayı düşünüyoruz. Diğer programcı arkadaşlarımızın da önemli bir ihtiyacı! İçtenliklerimle Murat KAPLAN ADeko GROUP |
Yazar: | efeguney [ 12 Oca 2004 14:53 ] |
Mesaj Başlığı: | |
ename[1] dwg ye bir pointer oldugunu bilmiyordum. bu konuyu biraz acarmisiniz. ancak dwg ye bir pointer olsa dahi bunun pratikte nasil bir faydasi var? Benim anladigim kadariyla sds altinda yazilan bir appplication active olan dwg file 'inda islem yapiyor. Yani sds_entmake() ile yaratilan objeler active dwg nin database'ine yerlestiriliyor. Dwg yi aktif hale getirmek icinde magnamana'nin yazdigi ilk cevaptaki codu kullanmak gerekli. Yalniz bu islem yeni bir pencere acip onun ekranda gosterilmesine sebep olmaz mi. Islemler tamamlanir tamamlanmaz bu ekran kapatilabilir. Ancak islem yapilmak istenen dwg dosyasinin bir sure de olsa ekranda gorunmesi gerekmekte. Icerden bu isi su an icin halledemiyoruz. Buraya kadar dogrumu anladigimi bana soyler; bir de mevcut bir dwg dosyasini file name'ine gore acip active hale getirmeyi anlatan bir code ornegi gonderirseniz cok sevinirim. iyigunler dilerim |
Yazar: | magnamana [ 12 Oca 2004 22:12 ] |
Mesaj Başlığı: | |
merhaba, sizin bahsettiğiniz com ve vba arabirimlerinde active document'la çalışır. sds uydulamalarında böyle bir durum söz konusu değildir. ename[1]=long(CICadDoc*) rb=sds_resbuf(RTSTR,....) 1.dwg'ye ekleme sds_entmakex(rb,ename) 1.dwnin adresi long Dwg_ONE=ename[1]; 2.dwg'ye ekleme bu dwg nin adresini de biliyoruz diyelim 1.dwnin adresi long Dwg_TWO=daha önceden atanmış; ename[1]=Dwg_TWO; sds_entmake(ename) öbür dwg'ye ilave eder. içtenliklerimle.. Murat KAPLAN ADeko GROUP.. |
1. sayfa (Toplam 1 sayfa) | Tüm zamanlar UTC + 2 saat [ GITZ ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |