Jump to content

The Hamma

Member
  • Posts

    360
  • Joined

  • Last visited

Posts posted by The Hamma

  1. 1 hour ago, Matt Panzer said:

     

    @The Hamma ,

     

    It looks like most of the objects in the 3D Component are set to display along with the 2D components. This is causing the objects to be rendered in hidden line behind the displayed 2d component. Try editing the 3D component of the symbol, select all of the objects, click on the "Display with 2D Components" button in the Object Info platte and uncheck all of the options. Once you do that, it should render much faster.

    Thanks that was the issue. 

    • Like 1
  2. Below is a script by Peter Vandewalle and it work fine as a command or from the script palette but if I run it as a tool the angle constraints don't kick in to the second object duplication. Does any one know why and how to fix it. I like this script vs the move by point tool because it makes a duplicate object at every point that I click. and I don't have to keep switching the move by point from retain objects to not retaining objects.

    Procedure CopyPt;

    {Peter Vandewalle, 14-03-2003}

    LABEL 99;

    VAR

    ObjHdle,NewHandle:HANDLE;

    xi,yi,xm,ym,xp,yp,X,Y:REAL;

    YesNo:BOOLEAN;

    SelNum:LONGINT;

    Procedure do_error(s:STRING;v:REAL);

    BEGIN

    AlrtDialog(Concat(S,' = ',Num2Str(5,V)));

    END;

    BEGIN

    Absolute;

    SelNum:=NumSObj(ActLayer);

    IF (SelNum=0) THEN BEGIN

    Message('Select object to copy:');

    GetPt(X,Y);

    SetSelect(PickObject(X,Y));

    END;

    Message('Click reference point');

    GetPt(xi,yi);

    YesNo:=false;

    xp:=xi;

    yp:=yi;

    REPEAT

    Message('Click endpoint, double-click to exit');

    GetPtl(xi,yi,xm,ym);

    IF ((xp=xm) AND (yp=ym)) THEN GOTO 99;{Check 4 double-click}

    Duplicate(xm-xp,ym-yp);

    xp:=xm;

    yp:=ym;

    UNTIL YesNo;

    99:ClrMessage;

    DSelectAll;

    RedrawAll;

    ClrMessage;

    END;

    Run(CopyPt);

  3. I would like to know if there is a way to convert a 3d poly to a 2d poly in the layer plane so it moves in 3d the same way that a 3d poly does, not converted to the screen layer as a hidden line rendering of the 3d poly. If there is not a way I put out this challenge for some one to write a script that would do so.

  4. Anyone know why this script runs from the script Palette but not if I add it to the menu. When added to the menu it runs but nothing happens.

    PROCEDURE ClassStyle;

    PROCEDURE changedoors(h :HANDLE);

    BEGIN

    SETRFIELD(h, 'door', 'IDLabelClass', 'Marks');

    ResetObject(h);

    END;

    BEGIN

    ForEachObject(changedoors, (INSYMBOL & INVIEWPORT & (PON='door')));

    END;

    Run(ClassStyle);

  5. Thank you both methods work, but I think what I will do on most occasions is to make sure the marquee selection goes around the end point of the wall on the side that is in the direction I am going to stretch. This way the doors move and all I need to do is rejoin the wall at the end. Another trick I can use is to break the wall at some point near the stretch so the marquee selection can go around an end point. It would be nice if the tool worked the way it had in the past. I used it this way every day.

  6. This is not working and I have no idea why, any help would be appreciated.

    Procedure linecolor;

    Var

    cw: longint;

    r,g,b: LONGINT;

    h: handle;

    BEGIN

    GetFillFore(h, r,g,b);

    if r,g,b =(0,0,255) then SetFillFore(h :255,255,255);

    End;

    Run (linecolor);

  7. Since I did not need to keep the symbols as symbols I was able to convert them to groups and then my revised script worked for the entire drawing. Thanks for the input.

    PROCEDURE SelectedObjLineWeight;

    Var

    cw:integer;

    FUNCTION explodeob(h:HANDLE) :BOOLEAN;

    BEGIN

    SymbolToGroup(h,2);

    END;

    FUNCTION edObject(h:HANDLE) :BOOLEAN;

    BEGIN

    cw:=GetLW(h);

    if cw = 1 then SetLW(h, 8);

    if cw = 7 then SetLW(h, 4);

    if cw = 10 then SetLW(h, 6);

    if cw = 14 then SetLW(h, 8);

    if cw = 20 then SetLW(h, 11);

    if cw = 28 then SetLW(h, 12);

    if cw = 39 then SetLW(h, 15);

    END;

    BEGIN

    DSelectAll; SelectObj(INSYMBOL & INVIEWPORT & (T=Symbol));

    ForEachObjectInLayer(explodeob, 2, 2,1);

    ForEachObjectInLayer(edObject, 0, 2,1);

    END;

    Run(SelectedObjLineWeight);

  8. I have written a script to change the lineweights of objects in a drawing based on there existing lineweight and it works fine in a layer but I can not get it to work in a symbol. Does anyone know what I could do to make this work. One Idea I have is to cut the objects out of the symbol and place them on a layer make the change and then put them back in the symbol but I do not know how do do this in a script.

    my script is below.

    Procedure Lineweight;

    Label 100, 101, 102, 103, 104, 105, 106;

    VAR

    H1 : HANDLE;

    P1,P2 : real;

    Begin;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=7));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    100:SetLW(H1,3);

    H1:=NextSObj(H1);

    if H1<>Nil then goto 100;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=10));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    101:SetLW(H1,4);

    if H1<>Nil then goto 101;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=14));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    102:SetLW(H1,6);

    H1:=NextSObj(H1);

    if H1<>Nil then goto 102;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=20));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    103:SetLW(H1,8);

    H1:=NextSObj(H1);

    if H1<>Nil then goto 103;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=28));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    104:SetLW(H1,11);

    H1:=NextSObj(H1);

    if H1<>Nil then goto 104;

    DSelectAll;

    SelectObj(INSYMBOL & INOBJECT & INVIEWPORT & (LW=39));

    DSelectObj(INSYMBOL & INVIEWPORT & (T=TEXT));

    H1:= FSActLayer;

    105:SetLW(H1,12);

    H1:=NextSObj(H1);

    if H1<>Nil then goto 105;

    End;

    Run (Lineweight);

×
×
  • Create New...