ARCHICAD: REVEALING GDL: Programmering För Arkitektens Unika Utmaningar

ARCHICAD: REVEALING GDL: Programmering För Arkitektens Unika Utmaningar
ARCHICAD: REVEALING GDL: Programmering För Arkitektens Unika Utmaningar

Video: ARCHICAD: REVEALING GDL: Programmering För Arkitektens Unika Utmaningar

Video: ARCHICAD: REVEALING GDL: Programmering För Arkitektens Unika Utmaningar
Video: Archicad 21 make komplex things much faster reacting with GDL 2024, April
Anonim

Detta expertmaterial fortsätter artikelserien "ARCHICAD: Rediscovering", som inleddes i december 2016 med en artikel av Vladimir Savitsky "Skapande av strukturer och utvinning av arbetsteckningar från en modell", och fortsatte sedan med publikationerna av Svetlana Kravchenko "ARCHICAD: Återupptäcka. Visualisering - nya möjligheter för en arkitekt "och Alexander Anishchenko" TEAMWORK: effektivt lagarbete steg för steg ". Cykeln är utformad för att hjälpa användarna att släppa lös ARCHICADs fulla potential®… Vi bad arkitekterna att dela med sig av sin personliga upplevelse av att använda programmet med icke-standardiserade metoder, lite studerade funktioner och nya funktioner som många användare kanske inte ens är medvetna om. Som utvecklare av ARCHICAD-applikationen är vi övertygade om att endast en djup kunskap om produkten kan avslöja dess fulla värde och på ett avgörande sätt påverka resultatet, hastigheten och kvaliteten på designerns arbete. Föredrar du också "olästa banor"? Har du erfarenhet av att använda icke-standardiserade metoder för att arbeta med ARCHICAD, använder du regelbundet inte de mest kända funktionerna i applikationen? Vi kommer gärna bjuda in nya författare till samarbete: [email protected]. Svetlana Kravchenko, en praktiserande arkitekt, rapporterar:

zooma
zooma

Visst har många av er hört talas om GDL i ARCHICAD, men inte alla vet fortfarande hur man använder det på jobbet. Med tanke på den otroliga användbarheten av den här funktionen, liksom de många frågorna efter mitt första webinar om detta ämne, bestämde jag mig för att gå in i mer detaljer om hur även den minsta kunskapen om den kan hjälpa mycket i det dagliga arbetet med en arkitekt.

Låt oss börja med grunderna GDL (Geometric Description Language) är ett BASIC-liknande programmeringsspråk som är utformat för att fungera i ARCHICAD-miljön. Den beskriver solida 3D-kroppar (som dörrar, fönster, möbler) och 2D-symboler i planritningsfönstret. Dessa objekt kallas Library Features.

För dem som åtminstone är lite bekanta med programmering kommer det inte att vara svårt att behärska detta språk. Men med tillräcklig önskan kommer studien av GDL att ligga inom makt för en person som är långt ifrån denna miljö. Varje arkitekt har studerat geometri och beskrivande geometri under sin tid, har utmärkt volymetriskt tänkande, och detta är redan hälften av framgången. Du behöver inte omedelbart försöka skriva komplexa objekt, det är värt att börja med de grundläggande geometriska formerna och formerna; mycket information kan hämtas genom att undersöka skript för andra biblioteksobjekt. Den huvudsakliga informationskällan är GDL-referenshandboken, som kan nås via hjälpmenyn i ARCHICAD själv. Så varför kan en arkitekt dra nytta av kunskap om GDL? Till skillnad från till exempel Grasshopper, med vilken du kan skapa komplexa strukturer, är GDL helt enkelt oumbärligt för att skriva olika markörer och bildtexter, samt för att skapa specialkomponenter för andra biblioteksfunktioner eller verktyg. En av mina första tillämpningar av GDL i mitt arbete var skapandet av ett speciellt paneldörrblad, som, när det ändrades, inte skalades i alla riktningar, utan bara ändrade paneldimensionerna. Tjockleken på den lockiga ramen och bredden på selen förblev oförändrad. Arkitekter vill också ofta lägga till några enkla funktioner i befintliga objekt i standardbiblioteken - och detta är den främsta anledningen till att de börjar gräva i GDL. Naturligtvis är kunskap om GDL inte avgörande, och många av dessa upter kan utföras med standardverktyg. Du kan till exempel konstruera fyllningar med plattor och spara dem som ett speciellt dörrblad. Om du bara har några av dessa icke-standarddörrar, blir det ännu snabbare. Men om det i ditt projekt finns många liknande dörrar i olika storlekar och deras breddförändringar under arbetet, kommer det att påskynda och förenkla arbetet att skriva en speciell panel i GDL. Geometrisk beskrivning innebär att någon av de möjliga formerna kan skrivas i text enligt mått eller koordinater. För ett 3D-skript finns det ett block med kommandon för grundläggande rumsliga former, såsom: - BLOCK och TEGEL - en parallellpipad konstruerad i tre dimensioner med ursprunget vid punkt 0 i koordinatsystemet BLOCKA a, b, c BRICK a, b, c

zooma
zooma

- CYLIND - cylinder längs Z-axeln, med höjd h och radie r CYLIND h, r

- SPHERE - sfär centrerad vid ursprung och radie r SPHERE r

zooma
zooma

En ellips och en kon beskrivs på ett liknande sätt. Nästa figurblock är redan mer komplicerat - det här är olika prismer. De beskrivs av en uppsättning punktkoordinater. Det enklaste prisma bestäms av antalet punkter (n), höjd (h) och listning av koordinaterna för alla punkter i ordning. PRISM n, h, x1, y1, … xn, yn

Det finns många olika prismer. Nästa vy, PRISMA_, låter dig ange statuskoder till koordinaterna för punkter, som bestämmer synligheten för ansikten och kanterna, och också låter dig skapa böjda prismer och prismer med hål (se avsnittet Statuskoder i referensboken). En annan typ, BPRISM_, skapar ett prisma vridet runt Y-axeln. FPRISM_ bygger ett prisma med en avfasning eller filé på ovansidan.

zooma
zooma

Det finns flera kommandon som beskriver mer komplexa polylinebaserade former: EXTRUDE, PYRAMID, REVOLVE, REGULERAD, SOPA, RÖR, KONSER, MASS. Deras beskrivning med exempel finns i referensen. För ett 2D-skript beskrivs former med andra kommandon: linje, cirkel, rektangel, polylinje, spline. Men du kan också registrera ett kommando för att bygga en projektion från ett 3D-skript.

Att skapa 2D- eller 3D-former är bara en del av GDL: s funktionalitet. Om du bara behöver ett bord är det lättare att bygga det med verktygen från ARCHICAD själv. Ett objekt skrivs i fallet när någon typ av parametricism krävs: förmågan att välja olika typer av bordsben, antalet ben, ändra storlek på bordet med bibehållande av de återstående dimensionerna, beräkna virket för dess tillverkning, vikt och kostnad. Objektet får inte innehålla någon geometri alls utan bara utföra beräkningar. För detta används också kontrollklausuler (kontrolloperatörer), såsom slingor, villkorliga uttalanden, med hänvisning till en specifik plats i koden (underrutin). Det är bäst att bekanta sig med cykler och förhållanden i början - de används ofta. Så alla exemplen nedan har villkorliga uttalanden. EXEMPEL # 1 - objektrotation Designers vill ofta göra ett objekt vridbart. Med detta enkla exempel kommer vi att titta på strukturen för biblioteksobjektet, liksom huvudfönstren i GDL-objektredigeraren. För att öppna något objekt i projektutrymmet (om utvecklaren inte har lagt in ett lösenord) måste du välja det och trycka på tangentkombinationen Ctrl + Skift + O. Ett annat sätt är att använda menyn Arkiv> Bibliotek och objekt> Öppna objekt. Om det för närvarande inte har valts något objekt öppnas ett fönster för att välja ett objekt. Låt oss lägga till rotationsparametrar, till exempel till ett lamellgaller (fig. 1).

zooma
zooma

Så vi har öppnat fönstret för GDL-objektredigerare (fig. 2). Längst upp till vänster finns det ett fönster för att visa olika vyer, som i det vanliga fönstret med objektparametrar; även till vänster finns knappar för att välja en vy - plan, höjd, 3D-fönster och förhandsvisning. Nedan finns knappar för att öppna parametertabeller, datalistor och skript. Manus kan öppnas på två sätt: klicka på knappen med namnet på skriptet - öppna i samma fönster, klicka på knappen till höger med fönsterikonen - skriptet öppnas i ett separat fönster. Detta kan vara användbart för att se olika skript samtidigt (Figur 3).

zooma
zooma

Högst upp i fönstret i något skript finns det en mycket nödvändig Kontrollknapp: när du klickar på den kommer redaktören att fråga dig om det finns några fel i skriptet. Meddelandet kommer att innehålla orsaken till felet och radnumret där felet hittades. I avsnittet "Detaljer" kan du välja en objekttyp: anpassat dörrblad, dörrhandtag, gardinväggsram och så vidare. Så speciella objekt (penna, duk, ram) kommer att visas i motsvarande fönster för att välja dessa element. När en 2D-typ väljs har objektet inga fönster för 3D-geometri. Där kan du också välja typer för olika markörer - en nod, sektioner, ledartext, zoner; de kommer också att visas i sina respektive verktyg. I det här avsnittet kan du fylla i en beskrivning av objektet och välja ett lösenord. Vidare - "Parametrar", där alla data som används i detta objekt och som kan ändras under arbetet med projektet presenteras i form av en tabell. Här måste vi lägga till parametrar för svängarna, som vi kommer att använda senare.

zooma
zooma

Tryck på knappen Ny ovanför tabellen (fig. 4). En ny rad visas där du måste fylla i kolumnerna. Den första av dessa kolumner är variabel. Här skriver vi namnet på variabeln, som kommer att användas i skript, på latin och utan mellanslag. Du måste namnge den så att den är lätt att komma ihåg och samtidigt är det lätt att förstå vad denna variabel är ansvarig för. I vårt fall måste vi skapa två variabler för värdet på rotationsvinklarna längs X- och Y-axlarna (objektet kan ändå roteras runt Z-axeln precis i planen). Jag bestämde mig för att namnge dem vinkel_x och vinkel_y. I nästa kolumn måste du välja datatyp. Valet presenteras i tabell 1.

zooma
zooma

De två sista typerna används inte vid konstruktionen av objektet, utan behövs för att göra listan mer klar och ordnad i objektparametervinduet. Vi behöver ett hörn - det här är den andra ikonen i tabellen. Den tredje kolumnen är Namn. Här kan du skriva utan regler på något språk vad vi exakt vill se senare i fönstret för objektparametrar. Och den sista kolumnen är Värde. Nu kan du lämna 0 här: detta värde ändras när som helst både i skriptet och i parametrarna för själva objektet. Figur 2 visar hur de två nya alternativen ser ut i fönstret GDL Object Editor. 5. Använd pilarna i början av raden för att flytta raden till en bekväm plats.

zooma
zooma

Då måste du spara objektet under ett nytt namn, eftersom standardbiblioteket är hårdkodat i behållaren och du inte kan skriva över objekt i det. Fönstret Objektparametrar ser nu ut så här (fig. 6).

zooma
zooma

Det finns två nya parametrar vars värde kan ändras när som helst. Men nu kommer ingenting att hända, eftersom inga kommandon ännu har skrivits med dem. Nu måste du öppna 3D-skriptfönstret. Här är en fullständig beskrivning av hur man bygger en 3D-modell baserad på givna parametrar. Dessutom kan olika makron vara kapslade i objektet. Innan alla konstruktioner måste du rotera det koordinatsystem där objektet ska byggas. Här är det viktigt att förstå följande logik: alla rotationer, rörelser och skalning sker annorlunda än när man arbetar i ARCHICAD själv. Vi tar inte ett element och roterar det utan roterar det globala koordinatsystemet (efter att det har ändrats blir det lokalt) främre bygga ett objekt. Flytta (ADD Command), Rotate (ROT), Scale (MUL) är koordinatsystemtransformationskommandon. Ytterligare omvandlingar kan tas bort i skriptet en efter en, flera samtidigt eller ta bort alla samtidigt. Referensboken beskriver allt detta i tillräcklig detalj och med exempel. Ett exempel på att flytta ett koordinatsystem i 3D-utrymme längs tre axlar samtidigt visas i fig. 7. LÄGG TILL a, b, c

zooma
zooma

Så innan alla konstruktioner roterar vi koordinatsystemet, först längs en, sedan längs den andra axeln. Rotation längs X-axeln utförs av ROTX alphax-kommandot, där alphax är moturs rotationsvinkel; istället för alphax måste du ange en tidigare skapad variabel. Rotationen längs Y-axeln utförs på samma sätt (Bild 8).

zooma
zooma

Nu kan du ställa in olika vinklar för rotation - och förändringar i 3D-modellen kommer att ske i visningsområdet längst upp till vänster (Bild 9).

zooma
zooma

Nu kan du ställa in olika vinklar för rotation - och förändringar i 3D-modellen kommer att ske i visningsområdet längst upp till vänster (Bild 9). Men ingenting händer i 2D än. I ett 2D-skript byggs ett objekt med separata linjer och polylinjer, så ritningen av ett objekt i plan är många gånger snabbare. På en plats är detta omärkligt, men om det finns hundratals sådana nät i projektet kommer bromsningen att bli betydande. Du kan beräkna koordinaterna för punkterna i dessa linjer och plotta dem som de skulle se ut i projiceringen av det roterade objektet, men det här är inte så enkelt och inte särskilt snabbt. I detta galler föreslår jag följande lösning: om vinklarna i X eller Y inte är lika med noll, kommer objektet i 2D-skriptet, det vill säga för planen, att återges som en projektion av 3D-modellen, och annars på det gamla sättet. Projiceringen av modellen för ett 2D-skript bygger på kommandot PROJECT2 projection_code, angle, method. Du kan läsa vad projektionskod, vinkel, metod betyder i referensboken, men vi kommer att bekanta oss med det viktigaste kommandot från avsnittet IF - THEN - ELSE - ENDIF kontrolluttalanden. Dessa är villkorliga uttalanden som hjälper dig att bygga villkorsklausulen från föregående stycke. I fig. 10 Jag har markerat de tillagda kommandona i 2D-skriptet och lagt till "översättning" i rött till höger.

zooma
zooma

Nu behöver du bara spara objektet och du kan använda det (bild 11). Fördelen med denna metod över konvertering till morf är att objektet förblir parametriskt, det kan läsas i specifikationerna, i det kan du ändra dimensionerna på lamellerna, ramens storlek och allt annat som var i originalobjektet.

zooma
zooma

Så i detalj, med hjälp av detta exempel, undersökte vi huvudfönstren och skript för GDL-objektredigeraren. Om objektet du har valt för rotation har parametrar inte i form av en lista, som i detta galler, utan i form av bilder och diagram, betyder det att utvecklaren också har skrivit ett grafiskt gränssnitt. Oftast är standardlistan med parametrar dold, som i Fig. 12: Det finns inget avsnitt "Alla parametrar" i rullgardinslistan med parametersidor.

zooma
zooma

I det här fallet måste du gå in i parameterskriptet och hitta kommandot som döljer alla parametrar (Bild 13). Detta skript beskriver alla åtgärder som påverkar parametrarna: - beteckning av alternativ eller intervall för möjliga värden (VÄRDEN); - alla beräkningar vars resultat tilldelas parametern (PARAMETERS); - dölja eller låsa parametrar (HIDEPARAMETER, LOCK).

zooma
zooma

Raden HIDEPARAMETERS ALL kan helt enkelt raderas eller genom att sätta ett "!" I början av raden, gör det oläsligt (enligt GDL-syntax betraktas en rad som börjar med ett utropstecken som en kommentar. Vidare kommer jag att skriva beskrivningar och översättningar i skärmdumparna efter "!" -tecknet). Därefter kommer raden "Alla parametrar" att visas i listan över parametersidor och genom att välja den ser du en standardlista med parametrar, bland vilka det kommer att finnas nya rader för rotation. EXEMPEL # 2 - text på en symbol Jag tar nästa exempel från det aktuella projektet. När man arbetade med planen för ett flerbostadshus var det nödvändigt att lägga bokstaven "K" på utomhusenheterna för luftkonditioneringsapparater - och så att den alltid var placerad vertikalt. Naturligtvis kunde brevet helt enkelt ha lagts till ovanpå med text eller en extern inskriptionstext, men då, när luftkonditioneringsapparaten vändes, kan texten också ha behövt flyttas. Till att börja med lade jag till fyra nya parametrar (Figur 14):

zooma
zooma

1. Visa text: parametertypen är ett booleskt värde, vilket innebär två möjliga värden: 0 (nej) och 1 (ja). Således kan texten slås på eller av.

2. Specialtext: parametertyp - text. Låter dig skriva vilken text som helst i symbolen (jag tänker använda en bokstav så att den passar in i rektangeln på luftkonditioneringsblocket).

3. Teckensnitt: typ - text. Observera att vissa typer av skrivning av denna variabel låter dig välja teckensnittsvärden i kolumnen från listan över de som är installerade på datorn. "Fonttype" kallar den här listan automatiskt, men om jag skriver "typsnitt" eller bara "typsnitt" måste jag skriva namnet på teckensnittet manuellt. Jag märkte detta ögonblick av en slump i ett av standardobjekten.

4. Textpenna: typ - penna. Tja, allt är klart här.

Låt oss nu titta på ikonerna som jag klickade på i början av raderna. Den första raden har en ikon tryckt

Image
Image

vilket betyder fet - fet. Det vill säga den här raden i fönstret för objektparametrar kommer att vara fet. De andra tre har ett piktogram

Image
Image

… Det betyder att dessa rader kommer att kapslas i rullgardinsmenyn under den första raden. I fig. 15 är en skärmdump som illustrerar hur den ser ut i objektparametrarna. Till att börja med lade jag till fyra nya parametrar (Figur 15):

Рис. 15. Окно Параметров Объекта
Рис. 15. Окно Параметров Объекта
zooma
zooma

Och i fig. 16 - vad jag lade till i ett 2D-skript (traditionellt med översättning och kommentarer).

zooma
zooma

Fikon. 16. Tillagda rader i ett 2D-skript I nästa skärmdump (Fig. 17) har jag, för större tydlighet, tonat olika typer av ord / kommandon / variabler.

zooma
zooma

Objektet är klart (fig. 18).

zooma
zooma

Och om jag inte skrev linjer med rotation och skalning, skulle objektet se ut som i fig. 19.

zooma
zooma

EXEMPEL # 3 - detalj För att förenkla arbetet med ett projekt, när du skriver ett objekt, kan du lägga till en textparameter med ett urval av flera alternativ för detaljering (enkel, medium, detaljerad). Och i 3D-skriptet, när du bygger olika små delar, lägg till ett villkor av typen: om detaljnivån = "detaljerad" förtjänar (beskrivning av byggnadsdelar) slutet av villkoret Globala variabler förtjänar särskild uppmärksamhet. De är 40 sidor långa i referenshandboken och är grupperade efter ämne för enkel sökning. I föregående exempel använde jag några objektorienteringsdata i projektet. Samma avsnitt i referenshandboken innehåller globala variabler för koordinaterna för objektplatsen - de används för att skapa objekt som en ledare med koordinater eller höjder i en sektion / höjd. Mycket ofta används GLOB_SCALE - ritningens skala (beror på vyn enligt det aktuella fönstret), i en skala av 1: 100 är den lika med 100, i en skala av 1:20 är den lika med 20. Den används oftast för att konvertera teckensnittstorleken till modellmätare eller vice versa. Denna parameter kan också användas för att "hänga" visningsalternativ på planen. Till exempel, för en bänk, skriv följande i ett 2D-skript:

OM GLOB_SCALE <100 DANNA ! om skalan är större än 1: 100, då
PROJECT2 3, 270, 2 ! bygg en projektion från en 3D-modell
ANNAN ! annat
ENDIF ! slut på tillståndet

Så på huvudplanen i en skala 1: 500 kommer bänkarna att visas som rektanglar, och på ett fragment i större skala kommer en detaljerad projektion att ritas. En liknande teknik, men för en tredimensionell modell, används i vanliga träd - om du markerar kryssrutan Automatisk krontyp. På ett visst avstånd från kameran ändras krontypen från detaljerad till enkel och från enkel till ellips. För att objektets skript ska kunna läsas igen måste du göra något med dem - till exempel, efter att du har ändrat perspektivet, markerat alla träd, öppnat objektets parametrar och utan att ändra något klickar du bara på OK, eller klicka och avmarkera kryssrutan för omslagsbyte.

Låt mig visa det med exemplet att approximera en sfär. Här är vad jag skrev i ett 3D-skript: discam_x = abs (GLOB_EYEPOS_X-SYMB_POS_X) discam_y = abs (GLOB_EYEPOS_Y-SYMB_POS_Y) discam_h = sqr (discam_x ^ 2 + discam_y ^ 2) discam_z = discam_By ^ 2 + discam_ = 20 sedan res = 50 om discam20 sedan res = 20 om discam30 sedan res = 10 om diskam> 40 då res = 5 resol res sfär 1 I skriptet använde jag de globala variablerna GLOB_EYEPOS_X, GLOB_EYEPOS_Y, GLOB_EYEPOS_Z är koordinaterna för platsen för kameran (ögonen) i 3D-fönstret för projektet och SYMB_POS_X, SYMB_POS_Y, SYMB_POS_Z är koordinaterna för objektets placering i rymden; abs - nummer modul (tar bort "-", om någon); sqr - kvadratrot; ^ 2 - kvadrera ett nummer.

I 3D-fönstret, på olika avstånd från kameran, kommer sfären att dras med olika approximationer. För tydlighetens skull slog jag på trådramsläget (bild 20).

zooma
zooma

Genom de globala variablerna kan objektet ta emot: - data om projektets plats (norr, latitud, longitud, höjd), inställd i motsvarande dialogruta; - nuvarande våning och egen våning - typen av aktuell vy (till exempel i GOST-byglarna används följande villkor: om vystypen är en lista, bygg sedan en vy över bygeln i ett avsnitt med positionsledare); i exemplet med ett galler kan du lägga till följande villkor: om typen av vy är en lista, rotera inte koordinatsystemet så att det i alla fall skulle vara en frontvy i listan över galler; - ofullständig visning av konstruktioner (du kan göra att objektet inte visar vissa delar om bara kärnan är vald).

Du kan dra väggdata till ett fönster eller dörrföremål. Bildtexter kan få mycket olika information om det element som de är associerade med, till exempel en kryssruta med lager av en flerskiktsstruktur eller en ledare med en volym av ett element. Och så vidare, 40 sidor med olika och mycket användbara globala variabler. EXEMPEL 4 - zonmarkör Låt oss ta en titt på hur en anpassad zonmarkör skapas. Om du skapar ett nytt objekt och väljer zontypsorttyp för det i avsnittet Detaljer visas i avsnittet Parametrar alla specifika parametrar som zonverktyget skickar till markören i blått (fig. 21).

Рис. 21. Параметры объекта подтипа Паспорт Зоны
Рис. 21. Параметры объекта подтипа Паспорт Зоны
zooma
zooma

Med TEXT2-kommandot kan du skriva någon av dessa variabler i ett 2D-skript - så får du en markör som endast består av text (Fig. 22).

zooma
zooma

Med hjälp av zonmarkörens allmänna parametrar kan du definiera textformat och radhöjd beroende på typsnittets höjd: DEFINIERA STIL "RUM" AC_TextFont_1, ROOM_LSIZE, 5,0 STIL "ROOM" rad = ROOM_LSIZE / 1000 * GLOB_SCALE * 1,5 text2 0, rad, ROOM_NUMBER text2 0, 0, ROOM_NAME text2 0, -row, ROOM_AREA Du kan skapa en ny parameter för att välja typ av markör (bild 23), ställa in alternativ för den i parameterskriptet (bild 24) och i 2D-skript skriver olika typer av marköråtergivning för olika typer.

zooma
zooma
zooma
zooma

2D-skript: om mt = "markör med nummer" sedan text2 0, 0, RUMNUMBER CIRCLE2 0,0, rad endif om mt = "antal och område" text2 0, rad / 2, RUMNUMBER text2 0, -row / 2, AREA_TEXT endif if mt = "title and area" then text2 0, row / 2, ROOM_NAME text2 0, -row / 2, AREA_TEXT endif if mt = "number, title and area" then text2 0, row, ROOM_NUMBER text2 0, 0, ROOM_NAME text2 0, -row, AREA_TEXT endif if mt = "area only" then text2 0, 0, AREA_TEXT endif I det här skriptet använde jag inte den fördefinierade områdesvariabeln som ett område utan konverterade området till text och lade till it enheter: area = str (ROOM_AREA, 4, 2)! konvertera ett tal till text med två decimaler AREA_TEXT = area + "sq.m." ! lägger till strängvärdet bokstäverna "kvm." Du kan komplettera raderna i markören med linjer som skiljer några rader. Använd STW-kommandot för att hitta längden på en sträng. Låt oss lägga till i början av skriptet: tl1 = stw (ROOM_NUMBER) / 1000 * GLOB_SCALE tl2 = stw (ROOM_NAME) / 1000 * GLOB_SCALE tl3 = stw (AREA_TEXT) / 1000 * GLOB_SCALE om mt = "antal och område" då tl = MAX (tl1, tl3) om mt = “nummer, titel och område” sedan tl = MAX (tl1, tl2) om mt = “titel och område” då tl = MAX (tl2, tl3) om mt = “endast område” då tl = tl3 OCH i varianterna av markörer, lägg till raderna med kommandot LINE2 (fig. 25).

Рис. 25. 2D-скрипт
Рис. 25. 2D-скрипт
zooma
zooma

Om zonnumret består av flera siffror, för markören, kan du skapa en parameter för en cirkels radie, oberoende av typsnittets höjd, eller istället för en cirkel, beskriv en ellipsliknande form med en längd lika med längden av zonnummerlinjen som vi hittade tidigare: POLY2_ 5, 1 + 2 + 4, -tl1 / 2, rad, 1, tl1 / 2, rad, 1, tl1 / 2, -row, 1001, -tl1 / 2, -row, 1, -tl1 / 2, row, 1001 Du kan lägga till en ny parameter för golvetyp (FLOOR_TYPE) och en parameter som låter dig dölja eller visa den (ShowFloorType), och i ett 2D-skript lägga till en triangel med en polylinje och text med golvtyp: om ShowFloorType sedan ADD2 0, rad * 3 POLY2_ 4, 1, -row * 1.4, -row * 0.8, 1, row * 2.8,60,201, row * 1.4, -row * 0.8, 1, 0,0,700 text2 0,0, FLOOR_TYPE endif För golvet är det önskvärt att lägga till en separat parameter för pennan samt poäng för grafisk redigering av golvmarkörens placering. Jag beskrev i detalj hur man lägger till grafiska redigeringspunkter i mitt webinar, och med hjälp av länken i slutet av artikeln kan du ladda ner objekt och se hur detta implementeras i det här fallet.

Och slutligen, låt oss överväga en annan mycket viktig subtyp av ett objekt som öppnar upp stora möjligheter - biblioteksparametrarna (fig. 26).

zooma
zooma

Ett objekt med denna subtyp bygger inte eller ritar något, det definierar parametrar i modellvyerna. Där kan du därmed ta ut de parametrar som du vill se gemensamma för objektet, men samtidigt kunna ställa in olika värden för olika typer.

Jag visar detta med ett exempel på en zonmarkör. Jag stötte på projekt där det fanns flera uppsättningar zoner i olika lager för olika vyer. Om det finns behov av olika markörer är bibliotekets globala parametrar den bästa lösningen.

Jag har en markör där det är möjligt att ställa in golvtyp i en triangel och ändra typ av markering (fig. 27). Och dessa två parametrar flyttas till en separat fil av subtypen Global Library Parameters (fig. 28).

zooma
zooma
zooma
zooma

För att dessa parametrar ska visas i dialogrutan Model View Parameters måste du registrera dem i objektgränssnittsskriptet (Fig. 29). Jag kommer inte att gå i detalj med de speciella kommandona för detta manus, de beskrivs tillräckligt detaljerat och med exempel i referensboken. Jag säger bara att här beskriver vi var den här eller den här etiketten eller knappen kommer att finnas (ett fält med ett urval av alternativ, en bock etc.), bilder kan också infogas i användargränssnittet. I standardbiblioteket har nästan varje objekt ett grafiskt gränssnitt; du kan se alla möjligheter och se hur dessa manus skrivs. Förutom Check-knappen har manuset också en View-knapp. Genom att klicka på den kan du snabbt se vad som händer.

zooma
zooma

Du kan spara objektet och visa det i dialogrutan Alternativ för modellvy (Figur 30). Här kan vi ändra typ av markering på en gång för alla zoner i projektet (med denna markör), men separat för olika typer.

zooma
zooma

Nu, i zonmarkeringsobjektet, måste du fråga objektet för värdena för dessa två parametrar. I huvudskriptet (som läses av objektet först, så alla beräkningar och definitioner av värden som ska användas i flera skript är det bättre att skriva här) Jag skriver två rader så här: success1 = LIBRARYGLOBAL ("LibraryGlobals20 "," ShowFloorType ", ShowFloorType) success2 = LIBRARYGLOBAL (" LibraryGlobals20 "," mt ", mt)" success "blir 1 om begäran lyckas; annars blir det 0.

Detta kan användas för att skriva ett varningsmeddelande istället för en zonmarkör om att LibraryGlobals20-objektet inte har laddats in i biblioteket.

Då fungerar objektet som vanligt med två nya värden: om typen av markering är sådan och så, skriv så och så och så vidare. I den här artikeln har jag bara täckt en liten del av GDL: s funktioner. Med hjälp kan du skapa både mycket enkla designelement och mycket komplexa objekt.

Till exempel har du att göra med små och enkla SIP-panelhus. Du har en specifik lista med alternativ för att ändra projektet: - Husets längd och bredd kan vara från 2,4 till 24 meter med ett steg på 1,2 m; - om bredden överstiger 6 m, bör det finnas en annan vägg i mitten; - två alternativ för golvhöjder beroende på panelstorlek; - Antal våningar - en eller två våningar. - fönster kan vara på vissa platser av paneler av en viss storlek; - efterbehandling av fasader i tre versioner; - tak i tre versioner; - väggtjocklek av flera standardstorlekar och så vidare.

Du kan ställa in alla dessa parametrar för objektet genom att lägga till kostnaden per kvadratmeter för panelen, taket, dekorationen etc. Och i 2D- och 3D-skript av objektet, bygg helt och rita detta hus med variabler istället för statiska dimensioner. För att användaren inte ska bli förvirrad i en lång lista med parametrar kan du skriva ett grafiskt gränssnitt för flera sidor med bilder och diagram. Beräkna alla volymer i huvudskriptet och visa kostnaden. Det är också möjligt att visa en tabell med panelernas layout i ett 2D-skript bredvid planen. Att skriva ett sådant objekt kommer att ta mycket tid, du måste utarbeta en detaljerad teknisk specifikation, ge alla nyanser, men då får du inte bara ett objekt utan nästan ett program där du, genom att välja parametrar, får kan få en uppsättning av ett utkast till design med en beräkning av material och kostnad för kunden. Förhoppningsvis har den här översikten väckt någons intresse för GDL: s funktioner. Min berättelse började med en stark önskan att ändra några små detaljer i någon standardzonmarkör, och ju mer jag läste guiden, desto mer avslöjas potentialen i detta verktyg, enligt min mening, mycket användbart för en arkitekt. Från länken nedan kan du ladda ner alla objekt som betraktades som exempel i den här artikeln: Ladda ner exempel Notera. ARCHICAD 20 användes för att skriva dessa objekt, så de öppnas inte i tidigare versioner. Om GRAPHISOFT GRAPHISOFT-företaget® revolutionerade BIM 1984 med ARCHICAD® Är branschens första BIM-lösning för arkitekter i CAD-industrin. GRAPHISOFT fortsätter att leda marknaden för arkitektonisk programvara med innovativa produkter som BIMcloud ™, världens första realtids samarbetsvilliga BIM-designlösning, EcoDesigner ™, världens första helt integrerade energimodellering och energieffektivitetsbedömning av byggnader och BIMx® Är den ledande mobilappen för att visa upp och presentera BIM-modeller. Sedan 2007 har GRAPHISOFT varit en del av Nemetschek Group.

Rekommenderad: