Jump to content

maarten.

Member
  • Posts

    387
  • Joined

  • Last visited

Everything posted by maarten.

  1. I think that a step in the good direction would be that there would be a new option for the layers (or even storys, viewports): Section height. That way, you can draw completely in 3D, ad some 2D things (dimensions, texts, annotation,...), make a viewport of the whole thing, set the section height and everything will be cut on that height. Classes needs to be updated with new options too: - attributes for when object is in view - attributes for when object is been cut - attributes for when object is hidden (behind another object or behind the section line) If we would have that, hybrid object wouldn't be needed anymore. Walls shouldn't be hybrid anymore either. And developing a hybrid tool or a making hybrid symbol would be a whole lot less work because 90% of the 2D objects that needs to drawn now, will be derived from the 3D section. hope this make some kind of sense
  2. At school, they teached us to use somewhat the same method, but in stead of using the 0.35 for the whole rectangle, we only used it on the top and one of the sides, the bottom and other side was in 0.18 or 0.25. That way, you got a kind of "shadow" on your window (see att1). On top of that, we had to use markers to draw the actual shadow (see att2) When we switched to CAD, we also ditched these methods... To bad, it gave some extra depth to the drawing. So, now when drawing in 3D and rendering with shadow, we can get the shadow (the marker) back, but not that thicker line...
  3. At an office where i used to work, they drew like this too, and i realy liked that effect. They did that with classes though, they had a main class for each kind of thing, and then several subclasses with different pen thickness in each of those main classes. A lot of work that was, but again, the effect was nice. So, you could solve this with those line styles of Revit, but better would be that VW made a new Render Style that would shrink the pen thickness of objects that are farther away from the viewing point. That way, the user don't have to do any additional work.
  4. If the resultstatus Boolean is TRUE, then the handle should OK. Is objectName a STRING?
  5. Could you post the line just above the one that's causing the error, sometimes the error is in the previous line. The Boolean is used to know if the function GetCustomObjectInfo was successful. That's why some programmers start their scripts like this: ... BEGIN IF GetCustomObjectInfo(objName,objHd,recHd,wallHd) THEN BEGIN {the rest of the script} END; ... That way they know for sure that they get the objName,objHd,recHd and wallHd of the now executing PIO.
  6. A better solution (imo) would be to give class some extra options: attributes in section attributes in view attributes when hidden This has been requested many times already, but would be really handy and a better solution then the one Revit has. Or can you use those Revit Line Styles for other things?
  7. Q1: Yes, with SetRField(PIOHandle,PIOName,ParameterName,ParameterValue); you can adjust the value of your parameters of your PIO Q2: SetRField(objHd,objName,?Tilt?, Num2StrF(tilt)); Asuming that parameter name is 'Tilt' off course Q3: Yes, it's a function. Functions always return a value, in this case a Boolean. So your syntax will be: ... VAR bool : BOOLEAN; objName : STRING; objHd,recHd,wallHd : HANDLE; BEGIN bool:=GetCustomObjectInfo(objName,objHd,recHd,wallHd); ... Q4: I don't understand the question, but here's a simple example of a rectangular PIO: PROCEDURE Example; VAR length,width : REAL; BEGIN {the length between click 1 and 2} length:=PLineLength; {When Mode 1: double of the length between click 2 and 3} {When Mode 2: the length between click 2 and 3} width:=PBoxWidth; Rect(0,-width/2,length,width/2); END; RUN(Example);
  8. SetObjectVariableBoolean(HandleToObject,1160,FALSE); {Screen to Planar} SetObjectVariableBoolean(HandleToObject,1160,TRUE); {Planar to Screen} Didn't test it, but those two should do the trick.
  9. You can get those values in a Dialog_Handler Procedure. Have a look at this for an example. I never used it before, but i think you need to use GetPopUpChoiceIndex to get the values.
  10. Funny, I've requested this some years ago and back then everybody declared me mad, we had already enough possibilities they said. (i'm not sure if it was this board or the Dutch one...) So, yes, Multi-Key shortcuts would be really nice! A preference to disable them would even be nicer .
  11. Message inside a dialog run will not work. So, the way to get temp information from your dialog while it's running is to use the Debugger (but chances are big that VW will crash) or to put the info into text objects. in short: after you create your layout with CreateLayout, you need to create controls and set them on the correct place with SetFirstLayoutItem, SetBelowItem, SetrightItem, SetFirstGroupItem,... (but you already did that part correct) Then you run the dialog with RunLayoutDialog. This Function will call the Dialog_Handler Procedure. In that Procedure, VW will tell you what control has been modified by the user (you called that Var a). At creation of the dialog, so as first, SetupDialogC will be called. In the SetupDialogC case, you can adjust your controls (visibility, enable, disable, check, uncheck,...) And then you have the 1 case (user clicked OK button) and the 2 case (user clicked Cancel button). procedure test; var i, OI : integer; DialogID : longint; procedure Dialog_Handler (var a : longint; b : longint); begin case a of SetupDialogC: begin SetThreeStateCheckBoxState (DialogID, 4, 1); end; 1: begin for i := 4 to 6 do begin {get the information from your dialog} GetThreeStateCheckBoxState (DialogID, i, OI); {this is temp, jus tto show the information} MoveTo(0,i*-2cm); CreateText(Concat(i,': ',OI)); end; end; end; end; begin DialogID := CreateLayout ('CHOOSE', False, 'OK', 'Cancel'); CreateStaticText (DialogID, 3, 'Choose !', 30); SetFirstLayoutItem (DialogID, 3); for i := 4 to 6 do begin CreateThreeStateCheckBox (DialogID, i, Concat (' ', i)); SetBelowItem (DialogID, i - 1, i, 0, 0); end; if (VerifyLayout (DialogID)) then If (RunLayoutDialog (DialogID, Dialog_Handler) = 1) then begin {place the rest of your script here} end; end; run (test);
  12. In the menu View=>Class Options, make sure the last option "View/Snap/Edit" is not active, choose an other one. Then do a Select All and you'll have all objects selected of the active class on your active layer.
  13. As far as i know, the DialogID isn't a CONST, it's a VAR that you'll get with the function CreateLayout().
  14. It does work here, you just need to make sure you've only selected one wall that has a wall peak. Here is the script again, rewritten a little bit so it will work on all selected walls on the active layer. PROCEDURE RemoveWallPeaksProc; {original script by Farookey} {all selected walls on the active layer will get their wall peaks removed} VAR LayerH : HANDLE; Criteria : STRING; WallZ : REAL; WallDZ : REAL; PROCEDURE RemoveWallPeaks(h : HANDLE); BEGIN ClearWallPeaks(h); HWallHeight(h,WallDZ,WallDZ); ResetObject(h); END; BEGIN LayerH:=ActLayer; GetLayerElevation(LayerH,WallZ,WallDZ); WallDZ:=WallDZ/(25.4/GetPrefReal(152)); Criteria:=Concat('(L=',Chr(39),GetLName(LayerH),Chr(39),') & (T=WALL) & (SEL=TRUE)'); ForEachObject(RemoveWallPeaks,Criteria); END; RUN(RemoveWallPeaksProc);
  15. If you're on a mac, you can use esc as an short key (select the Selection Tool in the Workspace Editor and hit the esc-button). If you're on windows, you can do this too by changing the workspace file in a text editor (be very aware of what you're doing, make backups before messing with files). I'm having the esc short key for the selection tool for years now and I love it!
  16. Have a look at ForEachObject. That way you don't need to make a selection and loop trough the selected objects.
  17. Ones you get the hang of creating hatches, it isn't that hard (and no, i'm not a math geek ). Navigating in that dialog on the other hand is just a nightmare...
  18. Why do you think DE made the "Virtual Wall"? It was made by NVW, it's located in their default library (they have 3 Virtual Walls btw). And you can set the class of that wall trough the properties of that wall style.
  19. Maybe i misunderstood you, but isn't this where that "Virtual Wall"-Wall Style is for? (draw the boundaries of your hole with the "Virtual Wall" (invisible) and connect the slab with this "Virtual Wall")
  20. Those are Mode buttons. You can give them short cuts in the Workspace editor (last tab).
  21. Happens to me too. A restart of VW2012 solved it for me.
  22. Your hatches are probable set to "Rotate in wall", turn that option off and it should be okay.
  23. Sounds like the resizeable symbols? Only difference would be that you can adjust the attributes. An extra option like "use class of symbol definition" or even "use class of parent" could solve this, no? Cool idea, i like this!
  24. The appendix says: HDRI Layer 592 LONGINT GetObjectVariableLongint On the assumption that this isn't a typo, the "GetObjectVariableLongint" means that this is a read only one, otherwise it would have said "ObjectVariableLongint". Not sure about it (i don't know much about textures and lights and so), but maybe one of these two functions can do the trick? SetLayerAmbientColor SetLayerAmbientInfo
  25. I wouldn't be so sure about that... But yes, supporting things from the past does slow new things or adjustments down, so sometimes it's better to not support those things any more and just move forward.
×
×
  • Create New...