THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 14/03/2012 at 06:33, xxxxxxxx wrote:
Hi to everyone,
I'm trying to write a simple script that converts ringselections in points by melting the selected points.
In order to get an automatism I only select the first point, and python get the next neighbors by calling SendModelingCommand(c4d.MCOMMAND_SELECTGROW...).
Works how suggested up to this point.
Now the problem: because I need to keep the sourcepoint of every new ringselection I've tried to deselect the first point so I can melt the remaining points.
But I can't get this working. Either the whole selection disappears or nothing happens.
I've tried to get the BaseSelection.DeselectFrom(x) function working for me, but no success.
Here the code I'm using:
> def meltNextRing(doc,scriptParent) :
> source = scriptParent[c4d.ID_USERDATA,2] #the object to work on
> sourcePoint = source.GetPointS() #get first point
> settings = c4d.BaseContainer()
> v = utils.SendModelingCommand(c4d.MCOMMAND_SELECTGROW,[source],c4d.MODELINGCOMMANDMODE_POINTSELECTION,settings,doc)
> newSelection = source.GetPointS()
On 22/03/2012 at 04:31, xxxxxxxx wrote:
After searching a few days I've found the answer in a post of NiklasR.
Here a little code-snippet in order to complete this thread and give anybody reading this the answer:
from c4d import documents, BaseSelect
def main() :
doc = documents.GetActiveDocument()
obj = doc.SearchObject("Landschaft") #find the object of interest
selection = obj.GetPointS() #read all selected points in a BaseSelect
selectedPoints =  #create an empty array
for i in xrange(obj.GetPointCount()) : #iteration over every point in the object
if selection.IsSelected(i) : #check if the actual point is recorded as selected in the BaseSelect
selectedPoints.append(obj.GetPoint(i)) #if the point is selected store it in the array
print selectedPoints #print all selected points to the console