Autodesk közösség programozók a FÁK
Készítsen DWF-hordozó AutoCAD Lisp
Beletelt ide be néhány dwf (vagy DWFx, nem számít) az aktuális dokumentum dwg. Persze, hogy én akartam, hogy megoldja a puzzle Lisp így anélkül _.dwfattach típusú parancsokat. Ez az ő megpróbáltatásokat, és mondd csak alul :)
Egyszerű szedés DWG-fájlban kiderült, hogy a nyilvántartást DWF (x) a leírások vannak tárolva a szótárban ACAD_DWFDEFINITIONS. Ok, ellenőrizze a szótárban, és létrehozza azt, ha szükséges - nem kérdés. De aztán elkezdett már nem nagyon világos és egyértelmű.
Először is, nem tudtam kezelni, hogy helyesen létre egy bejegyzést a szótárban. Természetesen a dwf van, persze, ez ACAD. De ez az! A döntések, hogy én találtam, előbb vagy utóbb, gyere le a látható kódot ADN DevBlog. A kód nem vezet, megmutatja jobb, gúnyolták rá :)
Először tettem a csapatot, LISP függvény, és másodszor, a doboz a DWF modell térben. Nos, szerettem volna egy hajtókar;)
# 91; LispFunction # 40; "Kpblc_dwfinsert" # 41; # 93;
public static tárgy lisp_dwfinsert # 40; ResultBuffer paraméterek: # 41;
ObjectId res = ObjectId. null;
Array érvek = paraméterek:. AsArray # 40; # 41; ;
húr sFileName = Convert. toString # 40; # 40; # 40; TypedValue # 41; # 40; érveket. getValue # 40; 0 # 41; # 41; # 41;. érték # 41; ;
ha # 40; Rendszer. IO. Fájlt. létezik # 40; sFileName # 41; # 41;
Doc = Alkalmazás. DocumentManager. MdiActiveDocument;
Adatbázis db = doc. adatbázis;
Szerkesztő ed = doc. Szerkesztő;
használva # 40; Tranzakciós tr = db. TransactionManager. StartTransaction # 40; # 41; # 41;
// első csekket a szükséges Layout
UnderlayFile elrendezések = UnderlayHost. DwfHost. GetFile # 40; sFileName "" # 41; ;
UnderlayItem selectedItem = null;
Regex rxEng = Új regex # 40; „Típus”. RegexOptions. ignorecase # 41; ;
Regex rxRus = Új regex # 40; „Típus”. RegexOptions. ignorecase # 41; ;
ha # 40; elrendezés. Terméket. Gróf> 1 # 41;
foreach # 40; UnderlayItem db elrendezésben. példány # 41;
Match strMatchEng = rxEng. mérkőzés # 40; elemet. név # 41; ;
Match strMatchRus = rxRus. mérkőzés # 40; elemet. név # 41; ;
ha # 40; # 40; Húr. Összehasonlítás # 40; elemet. Név. ToUpper # 40; # 41;. „Típus”. hamis # 41; == 0 # 41; || strMatchEng. A siker || strMatchRus. siker # 41;
# 123; selectedItem = elem; break; # 125;
# 123; selectedItem = elrendezések. példány # 91; 0 # 93; ; # 125;
ha # 40; selectedItem == null # 41;
# 123; ed. WriteMessage # 40; „Hiba, nem oldal neve Modell” # 41; ; return null; # 125;
DBDictionary nod = # 40; DBDictionary # 41; tr. GetObject # 40; db. NamedObjectsDictionaryId. OpenMode. ForRead # 41; ;
húr defDictKey = UnderlayDefinition. GetDictionaryKey # 40; typeof # 40; DwfDefinition # 41; # 41; ;
ObjectId defId = ObjectId. null;
ha # 40;. bólint. tartalmazza # 40; defDictKey # 41; # 41;
használva # 40; DBDictionary dict = new DBDictionary # 40; # 41; # 41;
bólint. UpgradeOpen # 40; # 41; ;
defId = bólintás. SetAt # 40; defDictKey, dict # 41; ;
tr. AddNewlyCreatedDBObject # 40; dict, igaz # 41; ;
# 123; defId = bólintás. GetAt # 40; defDictKey # 41; ; # 125;
ObjectId idDef = ObjectId. null;
DBDictionary dwfDict = # 40; DBDictionary # 41; tr. GetObject # 40; defId, OpenMode. ForRead # 41; ;
húr sDwfName = Path. GetFileNameWithoutExtension # 40; sFileName # 41; ;
ha # 40; dwfDict. tartalmazza # 40; sDwfName # 41; # 41;
# 123; idDef = dwfDict. GetAt # 40; sDwfName # 41; ; # 125;
Tehát, a kód működött: visszaad egy pointert az újonnan létrehozott entitás (

De a Reference Manager volt valami furcsa:

És ha úgy viselkedik, mint egy majom egy gránátot, és fuss „Leválasztás” (letiltani) a link?

Elmentem a ADN devhelp, a válasz az volt, valahogy így: „Create DWF-aljzatra COM mechanizmus jelenleg lehetetlen, hogy megteremtse a megfelelő elemek segítségével DXF nagyon nehézkes és tarthatatlan.”
Összefoglalva azt mondhatjuk, a következő: ha szükséges beilleszteni a DWF-hordozó a dokumentumban, vagy használja a parancs módszerekkel, akár teljes mértékben fejleszteni a .NET Lisp nem tud megbirkózni ezzel a feladattal.
