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 (); A modell térbe való belépés megjelent dwf:

Autodesk közösség programozók a FÁK

De a Reference Manager volt valami furcsa:

Autodesk közösség programozók a FÁK

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

Autodesk közösség programozók a FÁK

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.

Autodesk közösség programozók a FÁK

Kapcsolódó cikkek