Libraries & objects
About Archicad and BIMcloud libraries, their management and migration, objects and other library parts, etc.

questions re Killgroup GDL in AC11

Erika Epstein
Booster
In AC11 I've noticed in the custom parts I've created with slabs for doors and windows there are some new commands Killgroup, Group and Endgroup.

I'm not a GDL expert and would appreciate if someone could elaborate on their use.

I want to clean up the scripts and make the objects parametric but I'm not sure how to work with these new commands. The AC11 GDL pdf is not as helpful to me as I need.

Thanks in advance,
Erika
Erika
Architect, Consultant
MacBook Pro Retina, 15-inch Yosemite 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3
Mac OSX 10.11.1
AC5-18
Onuma System

"Implementing Successful Building Information Modeling"
9 REPLIES 9
Karl Ottenstein
Moderator
Erika wrote:
The AC11 GDL pdf is not as helpful to me as I need.
Boy, it sure isn't, Erika. I had not looked at those pages since solid element ops were introduced, and the descriptions are definitely cryptic.

These commands were introduced in 9 with SEOps. The example on page 113 of the GDL 11 PDF (illustrated on p. 112) is perhaps the best way of seeing what the commands do. Groups are named collections of geometry. SEOps are then performed on the groups using the group names. PLACEGROUP actually makes some geometry appear - either a group or the result of an op. KILLGROUP, as the manual says, removes all of the geometry associated with the group from memory. I assume that the info is removed when the script ends anyway, so am not sure how essential this is to performance. (Have not experimented.)

Cheers,
Karl
One of the forum moderators
AC 28 USA and earlier   •   macOS Sequoia 15.2, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Anonymous
Not applicable
Hello Erika,
Group operations were introduced in AC 8.0 in GDL.
They are almost the equivalent of the SEO commands
in AC but with some differences like there is no subtraction
with upward or downward extrusion and the
subtracted element always disappears. You need to be careful
if you are using autoscripted objects to learn about
group operations because the code often has a lot of
unnecessary redundancy which is confusing.
When I make an autoscripted object I usually go through
the code and delete these redundant elements.
I learned about group operations by starting with the explanation
in the GDL manual and doing simple experiments and paying close
attention to anything on this forum relating to group operations.
Peter Devlin
Erika Epstein
Booster
Karl,
If I understood correctly, the KILLGROUP shows up when there is an SEO command where you are subtracting a volume. Similarly the PLACEGROUP and/or ADDGROUP commands add a volume.

What confuses me in my examples is that I am not using SEOs in the slabby contstruction of my doors. For example I have a5-panel door (5 equal horizontal panels with top and bottom rails differing from side and interim rails. I created holes in the door 'panel' e.g. 3'x7' 'to insert the panels. So the program now usies the KILLGROUP commands to subtract the holes?

Below is a typical section of the 3D script AC is now generating. I don't know where all the text strings (first part of a coordinate?)after each is coming from so I don't know how to use them. Can you also explain what the (4) KILLGROUP commands refer to and also the lines of 'result's after each?


group "group_F9518F3C_2F44_430B_B979_90E66F52DF9E"
add -1'-0.7500", 6'-4.7500", -0'-2.0000"
rotz 270
rotx 90
roty -90
sprism_{2} "*R1902 blue trim", "*R1902 blue trim", "*R1902 blue trim",
10, 0'-0.0000", 0'-0.0000", 3'-3.3701", 0'-0.0000", -0'-10.5000", 0,
0'-0.0000", 0'-0.0000", 3'-3.3701", 0'-0.0000", 0'-0.0000", 0,
0'-0.0000", 0'-0.0000", 15, ind(material,"*R1902 blue trim"),
0'-0.0000", 0'-0.7500", 15, ind(material,"*R1902 blue trim"),
-0'-0.4728", 0'-0.7500", 15, ind(material,"*R1902 blue trim"),
-0'-0.4728", 0'-0.5707", 15, ind(material,"*R1902 blue trim"),
-0'-0.3505", 0'-0.4721", 79, ind(material,"*R1902 blue trim"),
-0'-0.2933", 0'-0.3258", 79, ind(material,"*R1902 blue trim"),
-0'-0.2367", 0'-0.1795", 79, ind(material,"*R1902 blue trim"),
-0'-0.1141", 0'-0.0815", 15, ind(material,"*R1902 blue trim"),
-0'-0.1141", 0'-0.0000", 15, ind(material,"*R1902 blue trim"),
0'-0.0000", 0'-0.0000", -1, ind(material,"*R1902 blue trim")
base
vert -0'-0.4728", 0'-0.0000", 0'-0.0000"
vert -0'-0.4728", 0'-0.0000", -0'-10.5000"
vert 0'-0.0000", 0'-0.0000", 0'-0.0000"
vert -0'-0.4728", 0'-0.7500", 0'-0.0000"
coor 8450, -1, -2, -3, -4
del 2
del 2
endgroup
set material "*R1902 blue trim"
result_94AEE74A_070A_4CBF_9DC7_7469B1BD1609 = sweepgroup{2} ("group_F9518F3C_2F44_430B_B979_90E66F52DF9E", -0'-0.4728", 0'-0.0000", 0'-0.0000")
result_8A362A55_FA8F_475B_AE7A_8AC141CF2B77 = subgroup ("group_489C81BF_02D7_4AD7_995A_3824D24086EF", result_94AEE74A_070A_4CBF_9DC7_7469B1BD1609)
killgroup (result_94AEE74A_070A_4CBF_9DC7_7469B1BD1609)
result_09C4F409_2E4D_40C0_BA08_ECD1194CC85B = isectgroup ("group_489C81BF_02D7_4AD7_995A_3824D24086EF", "group_F9518F3C_2F44_430B_B979_90E66F52DF9E")
killgroup ("group_F9518F3C_2F44_430B_B979_90E66F52DF9E")
result_A5405DAA_87EB_4BC8_A60E_040DCA4BF2C7 = subgroup (result_09C4F409_2E4D_40C0_BA08_ECD1194CC85B, "group_CB05B5A9_C576_4119_AA39_8E27D36A85FC")
killgroup ("group_CB05B5A9_C576_4119_AA39_8E27D36A85FC")
result_5FA20957_96FE_4F2F_8B06_C563E885F53B = addgroup (result_8A362A55_FA8F_475B_AE7A_8AC141CF2B77, result_A5405DAA_87EB_4BC8_A60E_040DCA4BF2C7)
killgroup (result_A5405DAA_87EB_4BC8_A60E_040DCA4BF2C7)

Thanks,
Erika
Architect, Consultant
MacBook Pro Retina, 15-inch Yosemite 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3
Mac OSX 10.11.1
AC5-18
Onuma System

"Implementing Successful Building Information Modeling"
Erika Epstein
Booster
Hi Peter,
Missed your post while I was writing up my followup questions. I had not seen these in my autoscripted lib parts until now and am starting to learn about them just as you suggest.

I'll do a search and study and practice.

Thank You

p.s.

sorry about all those P.M. I didn't realize I was hitting that button instead of posting.
Erika
Architect, Consultant
MacBook Pro Retina, 15-inch Yosemite 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3
Mac OSX 10.11.1
AC5-18
Onuma System

"Implementing Successful Building Information Modeling"
Karl Ottenstein
Moderator
Erika wrote:
Can you also explain what the (4) KILLGROUP commands refer to and also the lines of 'result's after each?
The auto-scripted code is unoptimized - sloppy work by GS IMHO.

The various "result..." variables hold temporary geometric results [in programming-speak, probably a pointer to a dynamically allocated data structure in memory].

Once that temporary result has been used - incorporated in the next step of the operation sequence - the memory used by it can be released, which is what the KILLGROUP is about.

That aside...I'm quite surprised to see all of these operations happening given your description of the original elements used to create your object. Pretty weird.

Regards,
Karl
One of the forum moderators
AC 28 USA and earlier   •   macOS Sequoia 15.2, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Erika Epstein
Booster
"That aside...I'm quite surprised to see all of these operations happening given your description of the original elements used to create your object. Pretty weird. "

I am relieved to know it [also] looks bizarre to someone of your caliber.

Thanks Karl.
Erika
Architect, Consultant
MacBook Pro Retina, 15-inch Yosemite 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3
Mac OSX 10.11.1
AC5-18
Onuma System

"Implementing Successful Building Information Modeling"
Anonymous
Not applicable
Erika,

What may confuse you, is that auto scripted objects do use SEOs in some circumstances, even if you don't do SEOs before saving your object.
For example, among others, a beam crossing a wall will result in a SEO in the resulting auto scripted object.
Sometime, auto scripted GDL code uses SEOs, instead of regular holes or various cutpoly commands. This is difficult to predict.

Meanwhile, this is the most weird code i have ever seen for an auto scripted object. I mean such long names instead of group1 or result1.
And i guess this is only a portion of the code. So my first question is, does this object work?
If it works, one can clean up the code to get it more readable/understandable.

Peter is right, SEOs exist since AC8, and pratically nothing new since.
Erika Epstein
Booster
Olivier,
You went right to the crux. This and all the other parts I've been doing in 11 work beautifully. When I opened the library parts to clean it up and make it parametric, usually a relatively easy task even at my skill level, I saw all these unfamiliar terms and such LONG scripts. The more I looked at them the more confused I became.

My unfamiliarity with these terms sent me to the GDL pdfs and my cookbooks, but I was left without an understanding of what they do and how to work with them. I know SEOs have been around since 8, but I had never seen these commands used in any autoscripted part before.

As Peter suggested, I'll start by making some duplicates and playing with them, looking around, searching the forum and GDLtalk and looking at other parts to start to get a handle on it.

Looking at the 5-panel door, there is trim around the panels which I created with the custom profiler. I suspect that is what is generating the SEO KILLGROUPS, ENDGROUPS etc. The group names, as you mentioned, are so strange.

Looks like a lot of late nights ahead of me.

Thanks,
Erika
Architect, Consultant
MacBook Pro Retina, 15-inch Yosemite 2.8 GHz Intel Core i7 16 GB 1600 MHz DDR3
Mac OSX 10.11.1
AC5-18
Onuma System

"Implementing Successful Building Information Modeling"
Anonymous
Not applicable
Erika wrote:
there is trim around the panels which I created with the custom profiler. I suspect that is what is generating the SEO KILLGROUPS, ENDGROUPS etc.
I think so. Custom profiler looks like the culprit. Good luck with the clean up.