2026-03-25 08:33 AM - last edited on 2026-03-25 08:50 AM by Barry Kelly
Somehow, our custom-made GDL objects from Archicad 27 can't use the MVO settings in Archicad 29. They were ok in Archicad 25 and 27, but not in 29. Not sure what I need to change in the Master Script and the Parameter Script of these objects to be able to use the MVO 2D and 3D detail levels in Archicad 29. Some of them are made purely with the Library Part Maker 25 - 27, some of them by Param-O 25 - 27, with a little bit of a tweak in the GDL script (Master Script and Parameter Script).
Operating system used: Windows 11
2026-03-25 08:49 AM
Old 27 objects need to use the old MVO Globals unless you can re-script them to use the new 28/29 MVO Globals.
Here are a couple of post about it, not sure if they will help.
https://community.graphisoft.com/t5/GDL/GDL-amp-the-Global-Library/m-p/669680
Barry.
2026-03-25 04:10 PM
@Andras Bognar I had the same problem and worked out a solution by having GDL check the Archicad version and then it either uses old or new LOD macro. I only needed it for 3D script but it might help.
https://community.graphisoft.com/t5/Libraries-objects/29-MVO-object-LOD-drop-in-GDL-script-wanted/td...
2026-03-26 01:04 AM
Thanks. Almost there, although it can't find the "Label Schematic."
2026-03-26
01:10 AM
- last edited on
2026-04-01
08:08 PM
by
Laszlo Nagy
Hi Barry,
Thanks. I skimmed those through, but still not sure what to change to be suitable with the 28/29 MVO macros.
The Master Script looks like this at the moment:
DETLEVEL_2D_MVO = 2 !MVO
DETLEVEL_2D_DETAILED = 3 !Full
DETLEVEL_2D_SIMPLE = 4 !Medium
DETLEVEL_2D_DRAFT = 5 !Low
dim detlevel2D_index[], detlevel2D_desc[]
iD=1
detlevel2D_index[iD]=DETLEVEL_2D_MVO : detlevel2D_desc[id]= "By MVO" : iD=iD+1
detlevel2D_index[iD]=DETLEVEL_2D_DETAILED : detlevel2D_desc[id]= "Full" : iD=iD+1
detlevel2D_index[iD]=DETLEVEL_2D_SIMPLE : detlevel2D_desc[id]= "Medium" : iD=iD+1
detlevel2D_index[iD]=DETLEVEL_2D_DRAFT : detlevel2D_desc[id]= "Low" : iD=iD+1
if iDetlevel2D=DETLEVEL_2D_MVO then
iDetlevel2D=DETLEVEL_2D_DETAILED
success = libraryglobal ("LibraryGlobals13","iDetlevelMVO2D",_reqDetLevel2D)
if success then iDetlevel2D=_reqDetLevel2D
endif
DETLEVEL_3D_MVO = 2 !MVO
DETLEVEL_3D_DETAILED = 3 !Full
DETLEVEL_3D_SIMPLE = 4 !Medium
DETLEVEL_3D_DRAFT = 5 !Low
dim detlevel3D_index[], detlevel3D_desc[]
iD=1
detlevel3D_index[iD]=DETLEVEL_3D_MVO : detlevel3D_desc[id]= "By MVO" : iD=iD+1
detlevel3D_index[iD]=DETLEVEL_3D_DETAILED : detlevel3D_desc[id]= "Full" : iD=iD+1
detlevel3D_index[iD]=DETLEVEL_3D_SIMPLE : detlevel3D_desc[id]= "Medium" : iD=iD+1
detlevel3D_index[iD]=DETLEVEL_3D_DRAFT : detlevel3D_desc[id]= "Low" : iD=iD+1
if iDetlevel3D=DETLEVEL_3D_MVO then
iDetlevel3D=DETLEVEL_3D_DETAILED
success = libraryglobal ("LibraryGlobals13","iDetlevelMVO3D",_reqDetLevel3D)
if success then iDetlevel3D=_reqDetLevel3D
endif
IF iDetlevel3D=DETLEVEL_3D_DETAILED then
var_77=1
var_151=0
ENDIF
IF iDetlevel3D=DETLEVEL_3D_SIMPLE then
var_77=0
var_151=1
var_142=16
ENDIF
IF iDetlevel3D=DETLEVEL_3D_DRAFT then
var_77=0
var_151=1
var_142=8
ENDIFvalues{2} "iDetlevel2D" detlevel2D_index, detlevel2D_desc
values{2} "iDetlevel3D" detlevel3D_index, detlevel3D_desc
! Values
values "var_4" range [0.070,0.325]
values "var_37" range [0.145,0.240]
2026-03-27
02:13 AM
- last edited on
2026-04-01
08:09 PM
by
Laszlo Nagy
Schematic and Detailed are the subroutines where you put code for each. Or you wire it up differently, depending how you are handling LOD.
In my case I have
"SCHEMATIC":
!code for schematic
RETURN
"SIMPLIFIED":
!code for simplified
RETURN
"DETAILED":
!code for detailed
RETURN
2026-03-30
03:16 AM
- last edited on
2026-04-01
08:09 PM
by
Laszlo Nagy
I rewatched this video (from BarkingDogBIM) https://www.youtube.com/watch?v=0re8RrU64yo and followed the "crumbs," finding a similar structure in the new MOV Scripts. So, I replaced the old ones with the new ones.
I had to change the iDetlevel3D to iDetlev3D in the Parameters:
The Master Script looks like this now ( changes in BOLD-Italic )
-----------------------------------------------------
! const values for parameter iDetlevel2D and/or iDetLev3D
OBJECT_SCHEMATIC = 1
OBJECT_SIMPLIFIED = 2
OBJECT_FULL = 3
OBJECT_SYMBOLIC = 10 ! only for elemoverride 2D
OBJECT_SYMBOLIC2 = 11 ! only for elemoverride 2D
OBJECT_AXIS = 12 ! only for elemoverride 2D
OBJECT_BYMVO = 0
dim detlevel3D_index[], detlevel3D_desc[]
iD=1
detlevel3D_index[iD]=OBJECT_BYMVO : detlevel3D_desc[id]= "By MVO" : iD=iD+1
detlevel3D_index[iD]=OBJECT_FULL : detlevel3D_desc[id]= "Full" : iD=iD+1
detlevel3D_index[iD]=OBJECT_SIMPLIFIED : detlevel3D_desc[id]= "Medium" : iD=iD+1
detlevel3D_index[iD]=OBJECT_SCHEMATIC : detlevel3D_desc[id]= "Low" : iD=iD+1
if iDetlev3D=OBJECT_BYMVO then
success = libraryglobal ("Objects_MVOSettings","iObjectDetlevel3D",_reqDetLevel3D)
if success then iDetlev3D=_reqDetLevel3D
endif
IF iDetlev3D=OBJECT_FULL then
var_77=1
var_151=0
ENDIF
IF iDetlev3D=OBJECT_SIMPLIFIED then
var_77=0
var_151=1
var_142=16
ENDIF
IF iDetlev3D=OBJECT_SCHEMATIC then
var_77=0
var_151=1
var_142=8
ENDIF
----------------------------------------------------- -----------------------------------------------------
values{2} "iDetlev3D" detlevel3D_index, detlevel3D_desc
! Values
values "var_4" range [0.070,0.325]
values "var_37" range [0.145,0.240]
-----------------------------------------------------This way, I can make new objects in Archicad 29 that work with the new MVO settings.
The plan is not to migrate every project from older versions to Archicad 29, since a lot of the Library Elements are not supported anymore by Central Innovation's Select Library. They have a tool to migrate the entire project, but only those objects can be migrated that are available at the new Global Ci Libraries.
If we need to use an older version of a file (25, 27) in Archicad 29, then we have three paths:
- One is to add the Migration Libraries after we migrated them from 25-27 to 29, and that will be a dead-end street, and we won't migrate that file any further.
- Second is when we migrate the project to 29 using the Central Innovation Migration Tool and then manually replace the objects that can't be migrated with these object that has the new MVO scripts, and we can migrate it further in the future.
- Third is redraw the project in Archicad 29 and we can migrate it further in the future.
2026-03-30 01:18 PM
A fourth option is to open the file in 29 but just keep using the old libraries.
Barry.
2026-03-30 11:23 PM
Hi Barry,
That is option one. Using the Migration Libraries in Archicad 29, and don't migrate that project to any further versions of Archicad.
2026-03-31 02:19 AM
Sorry, I thought one was saying your were migrating 25-27 to 29 - there is no such thing as migrating to 29, at least not easily as you have found.
You only need the older migration libraries if the job has objects from older versions.
Otherwise just loading the 27 library is all you need.
Barry.