algorithmic modeling for Rhino
How do you find the grasshopper filename in python? I want to build a python version of David's script here:
http://www.grasshopper3d.com/forum/topics/read-data-file-help
The script is written in VB and has the following lines
File = GrasshopperDocument.FilePath
Folder = IO.Path.GetDirectoryName(GrasshopperDocument.FilePath) & IO.Path.DirectorySeparatorChar
But I cant figure out how to call up the current GH_Document with Python.
Thanks!
Tags:
ghenv.LocalScope should be only used for scope manipulation. Of course, given that it is the local scope, it will contain all variables of it. Including ghenv. So you could write ghenv.LocalScope.ghenv.LocalScope... But please rather use ghdoc.Path :)
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
A little wordy, but:
ghenv.Component.Attributes.Owner.OnPingDocument().FilePath
should work.
Ha! Mostapha beat me to it with a more concise answer :D
Haha! Well I just learned where can I find the right OnPingDocument method for the GHPython component... Thank you for that. :)
Hey d00dz
I'm trying to pull a bunch of metadata from different locations - here's what I've got:
"""Displays document metadata
Outputs:
f: file name
d: document description
a: file creator
c: creation date
p: file path
r: revision count
v: Grasshopper version
l: list of add-ons used
"""
def Main():
global f, d, a, c, p, r, v
f = ghenv.LocalScope.ghdoc.Name
d = ghenv.Component.Attributes.Owner.OnPingDocument().Properties.Description
a = gh.CentralSettings.AuthorName
c = ghenv.Component.Attributes.Owner.OnPingDocument().Properties.Date
p = ghenv.LocalScope.ghdoc.Path
r = ghenv.Component.Attributes.Owner.OnPingDocument().Properties.Revisions.Count
v = gh.Versioning.Version
l = 1
Main()
The first question is that I'm bouncing between gh. and ghenv. for different things - can I/should I be more consistent? Are there consequences?
The second question is that I'm trying to pull the list of add-ons (variable "l") used in a definition. This data exists in the ghXML in the Library chunk:
<chunk name="Library" index="0">
<items count="4">
<item name="Author" type_name="gh_string" type_code="10"></item>
<item name="Id" type_name="gh_guid" type_code="9">9d96da9c-9354-ef32-7983-0acb11a3d493</item>
<item name="Name" type_name="gh_string" type_code="10">LunchBox</item>
<item name="Version" type_name="gh_string" type_code="10">2014.4.27.0</item>
</items>
</chunk>
Any ideas on how to get that bad boy?
Thanks!
B
Oh there's an "import Grasshopper as gh" in there btw
Hi Brian,
this post is old; maybe may I ask to start a new discussion next time?
On the part that you wrote, it can slightly be shortened to:
f = ghdoc.Name
d = ghenv.Component.OnPingDocument().Properties.Description
a = gh.CentralSettings.AuthorName
c = ghenv.Component.OnPingDocument().Properties.Date
p = ghdoc.Path
About i, I would wait for David to tell the right approach, as there might be some Grasshopper-SDK-specific method to query, which I am not aware of. Or maybe we have to just go though all document objects and check if they belong to external libraries. Let's see what David says on this,
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
It's not particularly easy, but it is reasonably straightforward. The attached file contains a C# script component which outputs all libraries used in the current file (separated into core and add-on libs).
--
David Rutten
david@mcneel.com
Same in Python, following David's sample.
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
Thank you David and Giulio!
Giulio, I started a new forum post with a few follow-up questions here:
http://www.grasshopper3d.com/forum/topics/pulling-grasshopper-metad...
Hi Ryan
ghdoc
contains a reference to the current Grasshopper document (solution). By accessing its Path attribute, we could get the location where the file is saved. As you can see in other answers, all of which are working and are good, other ways are possible. They are side-effects of providing a reference to the component (which can understand where it is placed) and ghenv.LocalScope, which shows which variables are defined in the last iteration (scope). So,
import os
if ghdoc.Path:
a = os.path.dirname(ghdoc.Path)
should get your folder.
I hope it helps,
Giulio
--
Giulio Piacentino
for Robert McNeel & Associates
giulio@mcneel.com
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by