Pagina's op IkLeerBIM

vrijdag 1 november 2013

Constraints are not satisfied

‘Constraints are not satisfied’ Kent u die uitdrukking dames en heren?

Ik hoor al gillen op de achtergrond. Het is dan ook een erg vage, en vreselijk irritante melding, bij het maken van een Revit Family. Revit bepaald op de achtergrond wat u wel en niet mag doen. En ja computers maken geen fouten. Dus het ligt echt aan ons. Zucht. Laten we dan maar proberen iets van de mechanismen van de constrains in Revit (via trail en error) te achterhalen. Kan dat ook slimmer? Vast wel…

Ik heb voor de testjes enkele Parameters aangemaakt met de volgende vernuftige benamingen:
  • Type_Lock
  • Type
  • Instance_Lock
  • Instance
Om het mezelf moeilijk te maken (en om te laten zien hoe fout Revit lijkt te zijn) heb ik ze allemaal een lengte van 500m meegegeven. De Instance_Report Parameter is te flexibel en is daarom niet relevant.
De Parameters
In het testmodel  gebruik ik losse maatvoering. En maatvoering met een Equality. Ooh wat zal ik fijn veel foutmeldingen krijgen! Om het verder zo zuiver mogelijk te houden, maatvoer ik Reference Planes die allemaal de eigenschap Not a Reference hebben.

Het doel van deze hele exercitie is om de Revit Constraints in een Family te onderzoeken. Hopelijk kunnen we daar lessen uit trekken, om foutmeldingen zo veel mogelijk te beperken.
Waar ik niet aan toekom is de impact van Formules. Maar ook de invloed van de sterkte eigenschappen van Reference Planes etc. Ik concentreer me vooralsnog op de maatvoering.

De basis: je kan prima de Label vervangen door een andere
------------------------
De eerste test, is een EQ maatvoering, in combinatie met een Dimension met een Label die steeds van de ene, in de andere Parameter wordt omgezet. Dit gaat prima, totdat er een losse maatvoering aan wordt toegevoegd. Ook als ik het Label op None zet, en weer wil inwisselen voor een Label, krijg ik de foutmelding. Ook wanneer ik de EQ van de Dimension afhaal, geeft Revit nog steeds dezelfde foutmelding.

Met een extra maatlijn lukt het niet meer om de Label te vervangen
Zelfs met de EQ eraf lukt het niet om de Dimension van een Label te voorzien
Conclusie: Maatvoering in je Family zonder specifiek doel, kan je Family minder flexibel maken, dan de bedoeling is. Dit geld natuurlijk ook voor de Automatic Sketch Dimensions die Revit zelf plaatst. Verder wordt duidelijk dat de werkelijke waarde voor Revit geen belemmering vormt om toch een foutmelding te geven. Alle Parameters zijn ten slotte 500!

------------------------
Gewoon om Revit te pesten probeerde ik 2x precies dezelfde Dimensions met Label aan de buitenste 2 Reference Planes te hangen. En inderdaad Revit schreeuwt terug. Ha ha! Slim als Revit is, werkt dit overigens ook door in andere Views!

2x Precies dezelfde (of een andere) Dimension met Label vind Revit niet leuk
Zelfs in een andere View gaat Revit tegen je schreeuwen
Conclusie: Gebruik niet alle Views om maatvoering aan toe te voegen. Maar beperk je tot 2 Views. Maatvoer zaken maar 1x.

------------------------
Nou gaan we eens kijken of we meerdere Dimensions met Label, door elkaar heen kunnen gebruiken. We gaan eerst de waarde van de overige Parameters halveren, om hiermee de losse Dimension te kunnen voorzien van Label.

Waardes aangepast zodat dit geen belemmering hoeft te vormen
Eigenlijk verbaast het totaal niet, dat ook dit niet kan. Een EQ en 2 Dimensions met een Label vindt Revit gewoon niet leuk. Het lijkt trouwens ook veel op test1.

Het lukt niet om te veel zaken met Label of Constrain vast te leggen
Het maakt niet uit wat voor soort de eerste Label is en of die Locked is of niet. Nogmaals, het betreffen nog steeds wijzigingen die inhoudelijk numeriek zouden moeten kunnen; 250+250=500 en 250=25. Maar Revit beoordeeld eerst de structuur en gaat dan pas verder.

Het maakt niet veel uit wat voor soort extra Constraints je wilt maken.
Conclusie: De structuur die je opzet moet kunnen. Als Revit merkt dat een element al muurvast zit mag je er niet nog een Dimension met Label aan toevoegen behalve een Instance Report Parameter.

------------------------
Een ander interessant fenomeen is de Lock. Want wat doet deze nou wel en wat niet? En kan dit ook foutmeldingen opleveren? Als er een Lock op een Dimension zit, betekend dit in de Family omgeving nog steeds, dat deze waarde kan worden aangepast. Je kan bijvoorbeeld in het Family Type menu de Parameter aanpassen. Of je klikt de Dimension met Label aan, en past op zo de waarde aan. 

Als ik de rechter Reference Plane wil aanpassen gaat Revit Schreeuwen vanwege de Lock
Wat de Lock wel blokkeert, is de mogelijkheid, om deze Parameter aan te passen via elementen of Parameters waar de Dimension met Label aan hangt. Dat kan niet via een losse Dimension. Maar ook niet via een Dimension met Label. Zelfs niet via het Family Types menu. Na 2x de Constraints te laten verwijderen (1x Lock + 1x Label) kan je weer verder.

Ik kan de Dimension met Lock niet aanpassen via een andere Dimension met Label

Zelfs niet via het Family Type menu
Conclusie: De Lock op een Dimension met Label kan voor foutmeldingen zorgen. Je kan een Parameter met een Lock niet aansturen via een andere Parameter. Niet sturende Parameters dienen dus geen Lock te hebben.

------------------------
Er zit ook een volgorde in Type en Instance Parameters. Type Parameters kan je slecht aansturen via Instance Parameters. Maar ja,  eigenlijk zegt de naam het al. Als je via het Family Type menu een Instance Parameter aanpast die consequenties heeft voor een Type Parameter gaat het niet. Doe je dit direct met behulp van de Dimension met Label via gemeenschappelijke geometry gaat het trouwens wel. De waarde van een Type Parameter mag ook niet bepaald worden via een formule met een Instance Parameter.
Een Type Parameter mag overigens nog steeds geen Instance Parameter met Lock aanpassen. Dit gaat ook niet via het Family Type menu.

Een Type Parameter kan je niet via een Instance Parameter aansturen

Als je de gerelateerde elementen aanklikt kan je zowel de Type als Instance Parameter tegelijk aanpassen

Maar een Instance Parameter met Lock is nog steeds niet aan te passen door een Type Parameter
Conclusie: Gebruik bewust Type en Instance Parameters dit voorkomt een hoop ellende.

------------------------
Toch heb ik nog steeds niet het gevoel alles in de vingers te hebben. Revit laat af en toe nog een achterdeur open, die ervoor zorgt, dat je toch de Family goed kan verzieken.  Iemand enig idee hoe ik onderstaand voorbeeld heb gemaakt?

Er zijn altijd omwegen om dingen te doen die eigenlijk niet kunnen


Afrondend zijn er nog veel meer probleempjes te bedenken in een Familie. Een Dimension kan niet negatief zijn bijvoorbeeld. Ook moet een lijnstuk/vlak een minimale lengte hebben. Etc.
Maar dat.. jongens en meisjes is weer een ander verhaal.

Geen opmerkingen:

Een reactie posten