A lot of our customers use rotated pipeclamps on their pipesupports as shown below,
Now we create custom supports if necessary .
In the standard supports there is no option to change the angle of the support.
Is it possible to modify the script that creates the support and add a "angle" parameter?
Has anyone of you done this already?
I could only suggest adding a custom field to the Pipe Supports class, which is called "PS_Angle" or something, and then get the designer to populate this field.
Otherwise you might be looking at custom supports/scripts to create the supports.
This is not the solution we are looking for, worldwide it is a common used type of support and you do not want something textual on the drawing when it is not shown.
Also (some) customers want it clearly on the support drawings.
No we have to explain to customers we use the standard supports of Plant3D and the clamps cannot be rotated.. how bad is that?
How much work is it for a experienced programmer to re write the script and ad a parameter to the standard supports?
I guess a lot (half) of the plant users benefit by it.
The out of the box supports don't look to have a rotated angle parameter on them, so my only other suggestion would be to make a custom support block and convert it to a pipe support.
Yes, we know we can use custom supports, but that is a workaround so when a line changes size and are NOT dimensioned to the center (mostly we have a measurement to B.O.P.) you need to recalculate the height.
THis is also a request to the developers, can the measurement/parameter of the height of the support be tot the B.O.P??
I had to do the same thing. I decompiled the PYC file in variants.zip and then opened the PY code in a Python editor. I was able to find the syntax where that angle was being set and rotated it 45. What I am telling you is much easier said than done. It took me a while to understand the process but Python is just a scripting language and once you see how it is written, you can easily update it, recompile it and place it back in variants.zip. For some starter material, see my blog (My Plant 3D Notes) http://hallmarkblogautocadpid.blogspot.com/2013/03/python-scripting-oh-how-fun-this-is-now.html
Also the CLAMP is CSGC002 when you start looking for it in VARIANTS.ZIP
Keep in mind, if you change the CSGC002, it will change everywhere the clamp is used. Not just on a shoe but on hangers also. If you don't want the hangers to have angled clamps, you need to modify the shoe PYC file and in that file, it calling CSGC002. In other words, the Shoe Script is calling the Clamp Script so edit the Shoe script to rotate the CSGC002 clamp.
Hi Scott,
do you mean the red higlighted "(90)" ??
def CSGC002(s, D = 116.0, L = 30.0, W = 4.0, K = 0.0, ID = 'CSGC002', **kw):
R1 = (D / 2.0)
R2 = (R1 + W)
if (K <= 0.0):
K = (D + (L * 2.0))
o1 = CYLINDER(s, R=R2, H=L, O=0.0).translate((0,
0,
-(L / 2.0)))
o2 = BOX(s, L=K, W=L, H=(W * 3.0))
o3 = CYLINDER(s, R=R1, H=L, O=0.0).translate((0,
0,
-(L / 2.0)))
o4 = BOX(s, L=K, W=L, H=W)
o1.uniteWith(o2)
o2.erase()
o3.uniteWith(o4)
o4.erase()
o1.subtractFrom(o3)
o3.erase()
o1.rotateY(90)
s.setPoint((0, 0, 0), (-1, 0, 0))
so you are wanting to modify every clamp? Even the ones on hangers? If you modify that file, everywhere CSGC002 is called into other scripts, it will be rotated.
my suggestion is to edit the ones that call CSGC002. Like CSGB001, CSGB002, CSGB003, CSGB008, and maybe CSGB009, CSGB010 and CSGB011 if those are necessary. After the item is called, you add one rotate command after it. Here in CSGB001, I added 2 rotate commands at 30 degrees because there are 2 clamps being inserted or called from CSGC002.
-------------------------------
def CSGB001(s, D=116.0, L=30.0, W=4.0, K=0.0, SL=180.0, SW=100.0, ST=8.0, SH=150.0, E=0.0, HL=0.0, HW=0.0, HH=0.0, ID="CSGB001", **kw):
#print 'CSGB001('+repr(s)+', D='+repr(D)+', L='+repr(L)+', W='+repr(W)+', K='+repr(K)+', SL='+repr(SL)+', SW='+repr(SW)+', ST='+repr(ST)+', SH='+repr(SH)+', E='+repr(E)+', HL='+repr(HL)+', HW='+repr(HW)+', HH='+repr(HH)+', ID="CSGB001", **kw)'
R1=D/2.0
HS=SH-R1
# create main objects
# create T
o1=BOX(s, L=ST, W=SL, H=HS).translate(((HS/2.0)+R1, 0, 0))
o2=BOX(s, L=SW, W=SL, H=ST).translate((SH-(ST/2.0), 0, 0))
# create unions
o1.uniteWith(o2)
o2.erase()
if HL>0.0 and HW>0.0:
if HH<=0.0:
HH=ST*2.0
o3=BOX(s, L=HW, W=HL, H=HH).translate((SH-(HH/2.0), 0, 0))
o1.uniteWith(o3)
o3.erase()
if L > 0.0 and W > 0.0:
LS=SL-L-(E*2.0)
o4=CSGC002(s, D=D, L=L, W=W, K=K).rotateY(-90).translate((0, 0, 0-(LS/2.0)))
o4.rotateZ(30)
o1.uniteWith(o4)
o4.erase()
o5=CSGC002(s, D=D, L=L, W=W, K=K).rotateY(-90).translate((0, 0, LS/2.0))
o5.rotateZ(30)
o1.uniteWith(o5)
o5.erase()
o1.rotateY(90)
# set connection
s.setPoint((0.0, 0.0, 0.0), (-1.0, 0.0, 0.0))
s.setLinearDimension("SH", (0,0,0), (0,0,-SH))
# s.setPoint((0.0, 0.0, -(LS/2.0)), (0.0, 0.0, 1.0))
# s.setPoint((0.0, 0.0, (LS/2.0)), (0.0, 0.0, -1.0))
# s.setPoint((0.0, 0.0, (LS/2.0)), (0.0, 0.0, 1.0))
#print 'CSGB001().END'