Hi, I didn’t know whether macro related threads should be rhino for windows or for scripting. Since it does say for scripting or python, I figured I’d just categorize as windows.

  1. I do have a few questions. For some odd reason, I am having problems with the deleteobjectdata command either in macro, or just plain old using on command line, with _selname, choosing the objects which aren’t grouped anymore, but still behave that way. The group was a rectangle and two points. Then grouped, moved and rectangle deleted. Then I would like to delete any name the points have so I can repeat the macro with no problems.

It will work in macro or command for the rectangle, but the points are being funky. No object selected when I use the command and selname, and choose them from the dropdown vs. _-selname So, somethings funky. I have tried a lot of different ways now.

Are points able to be considered objects to delete their data? When I select the points separately and go to object properties and highlight/delete, it works. But for a macro button, I would like to get it to work. I would just keep all the points after I repeat the macro, and do selpoint and delete them at the end, but to do so I would need to eliminate all name data.

Maybe my problem is not figuring out a way to group the rectangle, point, and point without adding a name to them as objects first. Sellast will only select the last thing created. It is a closed curve, and from curve to point. Even if the group(a jig, for aligning points, to align revolved holes) is made from just a rectangle with line, it would be a closed curve trying to join to a line. Anywho. Heres the updated macro that does not name group, and the delete the rectangle macro, which leaves the 2 points. Which I would like to remove name data from. So after the ungroup/delete rectangle macro I have tried many combos with the _deleteobjectdata to no avail. It will work for the rectangle however when I split things up, and run it for the rectangle after ungrouping.

  1. In macros, is there anyway to copy a point, in its exact location, of the new spot it is in, which will be a variable. And to copy with no object name data? How about a something that allows to make a point relative 1 unit away, then relative point 1 unit back, delete both the original and the previousmade point, to essentially give you a copy in the same location?
    I’ve been trying that but, it working out. Unless you made the point after you moved it, which will vary every time the macro is used. But what about the copy with no data? Or selecting a point, and somehow making a point relative to that point? I know this would involve funtions, which I’m not actually sure is possible with macros. Is there perhaps a command that takes a previously selected object, which you can use as a basepoint to enter a relative coordinate? The only problem is that the location will be variable each time the macro is used.

ANywho, any help is appreciated.

Here’s the macro for the crvs, points, and move. Following is the deletion of the rectangle
! _noecho _-setredrawoff
_-rectangle _3point=_yes
_sellast _-setobjectname 7rec
_-point w-9.125,-5.375,0 enter
_sellast _-setobjectname 7recpt1
_-point w-7.375,-7.125,0
_sellast _-setobjectname 7recpt2
_selnone _-selname 7rec
_-selname 7recpt1
_-selname 7recpt2
_group enter
w-10,-8,0 _-setactiveviewport
_move pause

The deletion of rectangle/ungrouping, and where I cannot add deletobjectdata and get it to work.

!_sellast _ungroup
_-selname 7rec
_delete enter

Here is the details from 1 of the 2 points, in the new version of script that does not use group name, only grouping and sellast commands. The same problem exists in both versions though.

ID: f6cb9555-48b8-41c9-85fa-73b5d6d74774 (327)
Object name: 7recpt1
Layer name: Default
Render Material:
source = from layer
index = -1
Valid point.
Point at (0.875,0,18.625).

Here is from the version that utilizes object names for 3 objects. 1 curve and 2 points. For some reason, when I ungroup them, they are still grouped. Even though all 3 objects were selected and grouped at one time instead of 2 times. But it still works for what I wanted before which was to delete the rectangle, and keep the points. Now I want to have a copy of the points new location, with no object names or group names, so I can repeat the macro. Instead of doing them 1 by 1, and having to delete them each time, I would like to keep the points for visually eyeing and checking coordinates. Then delete them, put on layer and lock or whatever. It would be a better workflow.
ID: 58f8cc70-2377-4bfb-900b-34e2e8e40b42 (336)
Object name: 7recpt1
Layer name: Default
Render Material:
source = from layer
index = -1
Valid point.
Point at (0.875,0,18.625).
ID: d600b5c0-d033-4792-8635-f1f1a9d8e5cd (337)
Object name: 7recpt2
Layer name: Default
Render Material:
source = from layer
index = -1
Valid point.
Point at (2.625,0,16.875).

Thank you very much, I would really like to know other ways of doing things than deleting the object data. I think a way to make a copy or new object relative to a selname-object then deleting would help out in a lot of macros.

What are you trying to accomplish with these macros? If you are writing macros that are this involved, it may be best to look at scripting.


True, I understand. But bugs, and heavy amounts of problem solving may not be my thing. Writing macros is kinda fun, but it will be for personal use only. It seems that there should be a way to use _deleteobjectdata, create a copy of a object of any kind that you don’t know the coordinates of, or create a object relative to point that is named with simple macroeditor.

Someones gotta have a command I haven’t came across. How about using a named reference point which is new, and into a macro at a variable spot to make a new point, line, or curve of any kind? I haven’t gotten anything but coordinates to work. Basically when it asks for a base point, you would be able to use _selname to make a new object? I’m probably just not doing this right.

There is no command called _DeleteObjectData in Rhino as far as I know…

If you want to remove the name of an object using a macro, use

_SetObjectName ""

(2 double quotes with no space between)

Setting an object’s name to an empty string (two double quotes) is the equivalent of removing the name.


Awesome, that’s what I was trying to figure out Mitch. I was trying between , 2 spaces, combinations of underscores, but the “” was what I was looking for.

I did get the command to work just before reading your comment, and then there’s the other way I was playing with for properties. Which I can now set to a none value with your tips.

So, it looks like we have 3 ways so far

  1.                             _SetObjectName ""
  2.                     ! _deleteobjectdata _-selname cat enter _name=yes enterend
  3.                           ! _-properties _object _name _-selname cat enter _object _name "" enterend

With these, you can set names, group objects, move them, and delete their names to be able to repetitively use macros, basically creating copies with no name data.

My macro’s are workin how I wanted em too now, sweet!

Some commands I feel would be useful to develop for the ease of use for macros, that make macros super easy.

  1. Sellast2, and then however many would help all the way up to say 10 or so. This way, without using selname and grouping objects. You could just use that command, say sellast5, and it will select the last five created. This would eliminate the need to remove the names when you ungroup them as well in some applications. Allowing you to macro several lines in order, then use sellast7 and group them, move them interactively, then ungroup and repeat the macro without needing to eliminate name data, or deal with high-tech object id #'s and functions.

  2. O, they have a add to group! Sweet.

  3. GroupBasePoint. Allow to add a base point to a group for reference in commands. So, you would need to be able to have a group with anything from curves, surfaces, points, etc. Then to these groups, you can add a basepoint that is linked to the group. The basepoint would not affect most operations, unless you chose _selgroupbasept in a prompt.
    This would allow you to use that groupbase point to make a object relative to a variable. Basically you can keep moving the group around, which is different each time a macro is used. But to be able to make something relative to the variable within a macro. You could also move group by the basepoint, which is a variable depending on where it has been moved to, etc. But where the basepoint is in accordance with the group is a constant, which could of course be changed too.

So basically, some of the macros I’m setting up are jigs. Jigs for whatever kind of work. So, a formatted shape, that you can apply to any new different sized object. As of now, I cannot seem to figure out how to create a object relative to the previously aligned jig(macro) on a new object. So, moving a square(the jig) to a object. Then to be able to make another jig based on the new location of the first jig. With some kind of way of creating objects relative to something that can be made by points with a macro and moved. The groupbasepoint is an idea to solve that in a user friendly way.

These jigs would allow for all kinds of options for tooling, and making rhino tools. It would simplify making a new tool, such as adding removing patterns/textures, etc…

This of course would lead to object base points. Then when you click on it, in object properties, in the boxes would their x,y,z coordinates/ world and cplane. Then one could could move a object by changing the object or group, in 1 command, by changing groupbasepoint or objectbasepoint.

You would not really need to change the osnaps for rhino, but you could. If you had a certain way you would like to move them by, a osnap might make things easier to move by, or easier to remember a specific base point.

I forgot the other ones, but they were pretty basic features that I felt would not take long to develop into rhino permanently for future versions. I’ll remember them later.

I’m glad I found the enterend in a different macro guide. Kinda clarifys the enter, and the enterends, and eliminating all the counting enters to get back to the top tier.

So, I hear scripts can have hybred code and whatnot. Although things say python is generally easier, I should learn VB first, to have base that is somewhat universal before taking the easy route right? Like learning rhino, before buying rhinogold, so that you’ll know how to make anything and be able to troubleshoot better.

Thank you very much.

You do realize, don’t you, that you can add individual points to your model, and I’m pretty sure you can include them in a group. You could also name one of them “BasePoint” or “GroupBasePoint” if you wanted to.

Again, I don’t know what Rhino you’re using but _deleteobjectdata is not a command. You may have made an alias for something else though.


O, my bad, I didn’t notice that. I cant seem to find it in any of the toolbars or plugins I have installed.

AIW, can you move a group by the point in a macro though? Maybe there is something I’m missing.

I am referring to a new category of point that makes reference only to the relationship between the object, and the point’s position in relation to the object. This would allow one in a macro to move a group from a point, to a new point. No matter where it is in coordinates. This new category of a point’s base point, could allow a complex move to be done in object properties, by simply changing a coordinate. Or to move an entire group from the mentioned reference point to a new coordinate, or reference point of another group. This would rely on data other than coordinates. Data that has to do with that groups geometric outline in relation to the basepoint, and move to another location in relation to a object or group which can have a variable location. The constant is the relation between the geometry, and relative position to that geometry.

That’s what I think would be cool. But If I could enter a variable point in a command, such as line it would be awesome. When it would ask for a basepoint for the line, you could enter _selgroupbasepoint and continue building from there. The difference between a coordinate and this other type of relational point is that the place you want to start the line changes each time you use the macro. 1 macro would work, no matter where the starting point was/is, and everytime you use it, without it being possible to know what the coordinates are going to be for that line start point.

Can you move things by a point that is in a group in macro? If so, I would like to know how.

ANywho, I do wonder where the deleteobjectdata came from. I didn’t do it, and I cant find it in my toolbars/plugins.
Maque Tools
Peters Tools
Rhino Paneling
Change object color
Grid spacing tools
Ortho angle tools
T splines

Thanks peeps. I really gotta go through all these plugins. Theres a heck of lot of great tools.

As of now, when I try to move a object by a point from the command line, when asked where to move from, doing selname and picking the name just adds the point to the selection and doesn’t allow to move by that point unless it is clicked on. I need to research alternative methods though. You can however enter a coordinate of that point and proceed. But when you do not know the coordinate because it is a part of a macro, that is intended to be used in a different coordinate each time, that is the challenge at hand. Moving by relationships, not by coordinates. In regular interactively use of rhino, this can be achieved. But when my macro is designed to be a jig, used as alignment for more jigs, that are used to properly align a group of macros and a variety of shapes, then this is where it would come in handy.

Take for example a star pattern. You create a free-form star shape, that you would like to Boolean difference from a solid. You would like to perform this equally across a shape. With alignment jigs, that have a relation to the previous one, it may be faster than using osnaps, less chance of error etc. Of course, you would need to adjust it for the curve profile, unroll, edit, project and a variety of things if you were going to do this to 1 object with many contours.

ANyways, more options for how you go about doing things. Although I am quite new, and can only hope to achieve proficient skills with textures, etc…Other programs do seem to make textures, ripples, etc, easier. That’s in my future though, rhino emboss, the works. If I can learn to do these things without relying on a feature in fancy plugins however, it may lead to better customized ways of doing things. Kinda like books, and discovery. If you went back to Einstein’s notes instead of reading someone’s book on his notes, you could lead to new discovery. Sometimes you can add a new branch to the tree by going back to the roots, and looking over each one, spotting a mistake on the original root, thus solving a issue in a different way.

More tools=more man/woman Me like rock.