FastFiber
Menu

Toon bijdragen

Deze sectie stelt je in staat om alle bijdragen van dit lid te bekijken. Je kunt alleen de bijdragen zien waar je op dit moment toegang toe hebt.

Toon bijdragen Menu

Berichten - cadtools@gmail.com

#1
AutoCAD probleem / Re: Tekenen vanuit Exel
do 11 02 2021, 10:24:18
Kijk ook even naar deze video.
https://www.youtube.com/watch?v=J0kZR6ptwG4
#2
forum / Nieuw hoofstuk: BricsCAD !
zo 23 08 2020, 22:59:26
 Nieuw hoofdstuk: BricsCAD !

Bye Bye AutoCAD
#3
Mijn tip
Gebruik steal (in lispvorm) van Lee Mac!
Werkt super. Een regel code en je hebt hem altijd bij de hand!

http://www.lee-mac.com/steal.html
#4
AutoCAD probleem / omzetten naar dll
zo 23 08 2020, 22:55:53
Hallo

Een eeuwigheid geleden dat ik hier vaker kwam. Sorry  :(
Zal mijn best weer doen om vaker van de partij te zijn.
Vraagje: is er iemand bekend met omzetten code naar dll .net
Ik ben er neit bedreven in. Ben geen fan van Visual studio. Te complex, te grote installs.

Deze code wil ik graag inladen


===



Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry

Public Class Contour_rhino
<CommandMethod("CONTOUR", CommandFlags.Modal)> Sub Contour()
        'Create sections of surfaces and solids at intervals in a specific direction.
        Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
        Dim ed As Editor = doc.Editor
        Dim db As Database = doc.Database

        Try
            ed.WriteMessage(vbLf & "Select one or more 3Dsolids or Surfaces:")
            Dim sf As New SelectionFilter(New TypedValue() {New TypedValue(0, "SURFACE,PLANESURFACE,EXTRUDEDSURFACE,SWEPTSURFACE,LOFTEDSURFACE,REVOLVEDSURFACE,NURBSURFACE,3DSOLID")})

            Dim pSelRes As PromptSelectionResult = ed.GetSelection(sf)
            If pSelRes.Status <> PromptStatus.OK Then
                Return
            End If

            Dim objIdArray() As ObjectId = pSelRes.Value.GetObjectIds()
            ed.WriteMessage(vbLf & "{0} Solids or Surfaces were selected.", objIdArray.Count)

            Using trx As Transaction = db.TransactionManager.StartTransaction()
                Dim btr As BlockTableRecord = TryCast(trx.GetObject(db.CurrentSpaceId, OpenMode.ForWrite), BlockTableRecord)
                Dim StrtPt, EndPt As Point3d

                With Start_End_Direction.LineJigger.Jig()
                    StrtPt = .startpunt
                    EndPt = .eindpunt
                End With

                Dim Dist As Double = SelDistance() 'Distance
                If Dist = Nothing Then Exit Sub

                Dim IntermediatePt As Point3d = StrtPt
                Dim vecDir As Vector3d = StrtPt.GetVectorTo(EndPt).GetNormal 'normalvector of direction
                vecDir = vecDir.MultiplyBy(Dist) 'Normal vector multiplied by distance
                For Each oid As ObjectId In objIdArray
                    Dim ent As DBObject = trx.GetObject(oid, OpenMode.ForRead)

                    If TypeOf ent Is Solid3d Then 'Solid3D

                        Using sol As Solid3d = DirectCast(trx.GetObject(oid, OpenMode.ForRead), Solid3d)
                            While Not IntermediatePt.DistanceTo(EndPt) < Dist
                                Try

                                    Dim SectReg As Autodesk.AutoCAD.DatabaseServices.Region = sol.GetSection(New Plane(IntermediatePt, vecDir))
                                    SectReg.ColorIndex = 1
                                    btr.AppendEntity(SectReg)
                                    trx.AddNewlyCreatedDBObject(SectReg, True)
                                    'RegionToPolyline(SectReg.ObjectId, True) 'Hier zit nog een klein gekkigheidje in.
                                    IntermediatePt = New Point3d((IntermediatePt.X + vecDir.X), (IntermediatePt.Y + vecDir.Y), (IntermediatePt.Z + vecDir.Z))

                                Catch NoIntersection As Exception When NoIntersection.Message = "eNoIntersections"
                                    IntermediatePt = New Point3d((IntermediatePt.X + vecDir.X), (IntermediatePt.Y + vecDir.Y), (IntermediatePt.Z + vecDir.Z))

                                End Try
                            End While

                        End Using
                    End If

                    If TypeOf ent Is Autodesk.AutoCAD.DatabaseServices.Surface Then 'Surface

                        Using surf As Autodesk.AutoCAD.DatabaseServices.Surface = DirectCast(trx.GetObject(oid, OpenMode.ForRead), Autodesk.AutoCAD.DatabaseServices.Surface)
                            While Not IntermediatePt.DistanceTo(EndPt) < Dist

                                Dim SectionEntities As Entity() = surf.CreateSectionObjects(New Plane(IntermediatePt, vecDir))
                                If SectionEntities IsNot Nothing Then

                                    For Each SectEnt As Entity In SectionEntities
                                        SectEnt.ColorIndex = 1
                                        btr.AppendEntity(SectEnt)
                                        trx.AddNewlyCreatedDBObject(SectEnt, True)
                                    Next
                                End If

                                IntermediatePt = New Point3d((IntermediatePt.X + vecDir.X), (IntermediatePt.Y + vecDir.Y), (IntermediatePt.Z + vecDir.Z))

                            End While
                        End Using
                    End If

                    IntermediatePt = StrtPt
                Next

                trx.Commit()
            End Using

        Catch ex As Exception
            ed.WriteMessage(vbLf & "Something went wrong:"  & vbLf & ex.ToString())

        End Try
    End Sub


Function SelDistance() As Double
       
        Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
        Dim pDblOpts As PromptDoubleOptions = New PromptDoubleOptions("") With {
            .Message = vbCrLf & "Enter interval distance: ",
            .AllowZero = False,
            .AllowNegative = False,
            .AllowNone = False
          }
        Dim PromptDistance = doc.Editor.GetDouble(pDblOpts)

        If PromptDistance.Status = PromptStatus.OK Then
            SelDistance = PromptDistance.Value
        Else
            SelDistance = Nothing
        End If

    End Function


End Class


Namespace Start_End_Direction
    'Adapted from:
    'https://spiderinnet1.typepad.com/blog/2013/07/autocad-jig-vbnet-dynamic-dimension-and-line-jig-using-entityjig.html

    Public Class LineJigger
        Inherits EntityJig

        Private Shared mEndPoint As Point3d = New Point3d()

        Public Sub New(ByVal ent As Line)
            MyBase.New(ent)
        End Sub

        Protected Overrides Function Update() As Boolean
            '(TryCast(Entity, Line)).EndPoint = mEndPoint
            Dim lijn As Line = TryCast(Entity, Line)
            lijn.EndPoint = mEndPoint
            Return True
        End Function

        Protected Overrides Function Sampler(ByVal prompts As JigPrompts) As SamplerStatus
            Dim prOptions1 As JigPromptPointOptions = New JigPromptPointOptions(vbLf & "Select endpoint and direction: ") With {
                .BasePoint = (TryCast(Entity, Line)).StartPoint,
                .UseBasePoint = True,
                .UserInputControls = UserInputControls.Accept3dCoordinates Or UserInputControls.AnyBlankTerminatesInput Or UserInputControls.GovernedByOrthoMode Or UserInputControls.GovernedByUCSDetect Or UserInputControls.UseBasePointElevation Or UserInputControls.InitialBlankTerminatesInput Or UserInputControls.NullResponseAccepted
            }
            Dim prResult1 As PromptPointResult = prompts.AcquirePoint(prOptions1)
            If prResult1.Status = PromptStatus.Cancel Then Return SamplerStatus.Cancel

            If prResult1.Value.Equals(mEndPoint) Then
                Return SamplerStatus.NoChange
            Else
                mEndPoint = prResult1.Value
                Return SamplerStatus.OK
            End If
        End Function

        Public Shared Function Jig() As (startpunt As Point3d, eindpunt As Point3d)
            Try

                Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
                Dim ed As Editor = doc.Editor
                Dim ppr As PromptPointResult = ed.GetPoint(vbLf & "Select startpoint: ")
                If ppr.Status <> PromptStatus.OK Then Return Nothing
                Dim pt As Point3d = ppr.Value
                Dim ent As Line = New Line(pt, pt) With {
                    .ColorIndex = 4
                }
                ent.TransformBy(ed.CurrentUserCoordinateSystem)
                Dim jigger As LineJigger = New LineJigger(ent)
                Dim pr As PromptResult = ed.Drag(jigger)

                Return (ent.StartPoint, ent.EndPoint)
            Catch

                Return (Nothing, Nothing)
            End Try

        End Function

    End Class
End Namespace

#5
Autocad babbelhoekje / Re: robot
do 28 09 2017, 22:27:31

Over het algemeen kan er een behoorlijk zijn verschil tussen het analytische model en het 3D CAD model.
In het verleden heb ik wat mee mogen werken aan gekoppelde data tussen reken tekenmodellen, waren min of meer experiementen  ' round tripping ' noemde ze dat destijds, we hebben het over periode 2007 2008. Was niet zo'n succes . Ik denk eerlijk gezegd wel dat de combi Allplan met Scia sterker is. Maar ik heb niet de illusie dat het realistich is om in één model onder te brengen. Cheers
#6
Autocad babbelhoekje / Re: robot
di 26 09 2017, 22:07:45
Neem aan dat je Autodesk forum voor Robot al wel had ontdekt.

https://forums.autodesk.com/t5/robot-structural-analysis-forum/bd-p/351


BIj ons op kantoor gebruiken ze eerder SCIA engineer en IDEA https://idea-rs.nl Vraag me af in hoeverre Autodesk diepere constructeurs kennis en kunde heeft om volgens de nederlandse regelgeving support te verlenen. Dat is namelijk geen sinicure, niet iets dat je 'er even bijdoet..'.

Moet je denk als gebruiker denk ik toch zelf een beetje uitvogelen..
#7
En als ander alternatief.. : RLXpaste van Neerlandse bodem.

http://www.cadtutor.net/forum/showthread.php?95094-RlxPaste
#8
Misschien 'Superclip' eens proberen.
Je kunt er ook een netwerk versie van maken zodat het als clipboard werkt tussen collega's.
Werkt best handig.

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/superclip-revision/td-p/2942752
#9
Hoi Ik heb iets geprogrammeerd.
Misschien denk je, wat moet ik er mee? of misschien .. dat kan beter... Ik doe dat meestal anders ..
Ik hoop op het laatste, daarom deel ik hem even

onderstaande demo over gebruik, spreek neem ik aan voor zich



https://youtu.be/cN_QbiOR7co



; command PLAN gebruiken zonder uit te zoomen
; custom command voor instellen UCS naast ucsfollow                                         
; view to ucs => PLN in plaats van PLAN
; UCS World => WCS
; UCS view / object / face / 3 punten => UCV UCO UCF UCO3
; roteer ucs 90 graden : UCM

; PLN werkt in 3d met EXPLAN (EXPRESS tools)

(defun c:pln ()
    (setq getviewdir (getvar "viewdir"))
    (setq getviewdir_x (car getviewdir))
    (setq getviewdir_y (car (cdr getviewdir)))
    (setq result_pln (+ getviewdir_x getviewdir_y))
    (print result_pln)
    (if (= result_pln 0) (c:pln_2d) (c:explan))
)


(defun c:pln_2d ()
(setq vctr (getvar "viewctr"))
(setq vsize (getvar "viewsize"))
(setq olducsfollow (getvar "ucsfollow"))   
(setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ())     
(setq getosnapz (getvar "osnapz")) (if (= getosnapz 1) (setvar "gridmode"  1) (setvar "gridmode"  0))   
(command "plan" "")
(command "_.zoom" "c" vctr vsize)   
(command "ucs" "v")
(setvar "ucsfollow" olducsfollow) ; voorgaande waarde
)


(defun C:ucp ()
  (prompt "\t* UCS - previous")
  (SETVAR "UCSICON" 1)
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ())
  (command "UCS" "p")
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde
  (prin1)
)

(defun C:ucf ()
  (prompt "\t* set UCS to face")
  (SETVAR "GRIDMODE" 0)
  (SETVAR "OSNAPZ" 0)
  (SETVAR "UCSICON" 1)
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ()) 
  (command "UCS" "f" pause pause)
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde
  (prin1)
)


(defun C:UCO(/ ENT1 )
  (setq ENT1 (entsel "\nPick object to align UCS:"))
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ()) 
  (command "ucs" "ob" ENT1)
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde
  (princ)


(defun C:uc3 ()
  (prompt "\t* set UCS 3 points")
  (SETVAR "GRIDMODE" 0)
  (SETVAR "OSNAPZ" 0)
  (SETVAR "UCSICON" 1)
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ())
  (command "UCS" "3" pause pause pause)
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde
  (prin1)
)

(defun C:ucm ()
  (setvar "cmdecho" 0) 
  (prompt "\t* draai UCS haaks MET de klok mee")
  (setvar "UCSICON" 1)
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ()) 
  (command "UCS" "z" "")
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde 
  (prin1)
)


(defun C:WCS ()
  (setvar "UCSICON" 1)
  (setq olducsfollow (getvar "ucsfollow"))   
  (setq getucsfollow (getvar "ucsfollow")) (if (= getucsfollow 1) (setvar "ucsfollow"  0) ())
  (command "UCS" "")
  (setvar "ucsfollow" olducsfollow) ; voorgaande waarde
  (prin1)
)


#10
 :vreegoe: benieuwd!
#11
Met dien verstande dat je een licentie 'aanschaft' in de zin van : ik koop een auto, dit softwareproduct is van mij. Autodesk heeft het ONE model principe tegenwoordig, dat houdt in : je neemt een abbonement. volgens mij ben je daar wel flexibeler mee om te werken voor meerdere klanten of firma's. Je betaald tenslotte 'het recht' voordeel van een abbonement is ook dat je er redelijk makkelijk van afstapt kunt als je het niet meer nodig hebt. Geen restwaarde die ongebruikt in de la verdwijnt, als gedachte hierachter.

Maar als het het hebt over aanschaf, daarnaast zou ook natuurlijk ook eens kunnen kijken wat BricsCAD aanbiedt als alternatief.  Ik ben zelf wel gecharmeerd van de ambitie deze Belgische(!) ontwikkelaar laat zien, beste Julien. Qua doorontwikkeling van dwg en 3D (bim) en IFC compabiliteit laten ze een stuk meer zien dan Autodesk. Die laten native AutoCAD een beetje voor wat het is (, lijken te hopen dat men zal overstappen op andere software, Revit, Fusion 360 of zoiets als Infraworks.. ) zomaar mijn gedachte..
#12
Deze werkt eigenlijk prima!
(opgelost ;-)


;;;Grrr. CADtutor 23-4-2017

(defun C:test ( / pL->PFACE LM:group-n SS i e enx o L eL )
 
  (defun pL->PFACE ( pL / i )
    (setq i 0)
    (apply 'command
      (append '("_.PFACE") (apply 'append (mapcar (function (lambda (x) (list "_non" x))) pL))
        '("") (mapcar (function (lambda (x) (itoa (setq i (1+ i))))) pL) '("" "")
      )
    )
  )
 
  ;; Group by Number  -  Lee Mac
  ;; Groups a list 'l' into a list of lists, each of length 'n'
 
  (defun LM:group-n ( l n / r )
    (if l (cons (reverse (repeat n (setq r (cons (car l) r) l (cdr l)) r)) (LM:group-n l n) ) )
  )
 
  (cond
    ( (not (and (princ "\nSelect closed polylines to draw pfaces: ") (setq SS (ssget "_:L-I" '((0 . "*POLYLINE")))))) )
    (
      (progn
        (repeat (setq i (sslength SS))
          (and
            (setq e (ssname SS (setq i (1- i))))
            (setq enx (entget e))
            (setq o (vlax-ename->vla-object e))
            (vlax-curve-isClosed o)
            (vlax-property-available-p o 'Coordinates)
            (setq L (cons (LM:group-n (vlax-get o 'Coordinates) (cond ((member '(0 . "LWPOLYLINE") enx) 2) (T 3)) ) L ))
            (setq eL (cons e eL))
          ); and
        ); repeat
        (not L)
      ); progn
    )
    (T (mapcar 'pL->PFACE L) (mapcar (function (lambda (x) (redraw x 3))) eL)
      (if (progn (initget "Yes No") (= "Yes" (cond ((getkword "\nErase the polylines? [Yes/No] <Yes>: ")) ("Yes"))))
        (mapcar 'entdel eL)
        (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
      ); if
    ); T
  ); cond
  (princ)
); defun


#13
AutoCAD probleem / Re: Snelheid
za 22 04 2017, 23:00:39
gevonden .. !!  bedankt !!:)
ik dacht het niet kon, toch wel.
Die ga ik default op 0 zetten
Als je nu bjivoorbeeld trimt zal hij niet vooraf het resultaat laten zien


Dit zoekresultaat.. check post die ik daar achter liet ;-)

https://forums.autodesk.com/t5/autocad-forum/how-to-turn-off-trim-preview/td-p/4950348

#14
Autolisp / Uitdaging : visual PFACE routine
vr 21 04 2017, 00:02:49
Hoi

Ik zag dat Lee Mac een nieuw stukje code heeft gemaakt voor Grsnap. Nu speel met het idee dat dit een mooie basis zou zijn om een fijnere command te programmeren om basis hiervan.

Ik kan erg weinig vinden qua PFACE lisp voorbeelden en documentatie, maar volgens mij zou het niet zo ingewikkeld moeten zijn en ik denk dat je er veel plezier mee kunt hebben om 3D vlakken te maken.

Broncode voor ondersteuning
http://lee-mac.com/grsnap.html

Het idee in een filmpje..
https://youtu.be/3NSCJs8Q2AY
#15
AutoCAD probleem / Re: Snelheid
do 20 04 2017, 23:59:24
Citaat van: bart op di 18 04 2017, 11:50:31
onder options selection kan je een heleboel effecten uitschakelen

Ik heb veel bekeken maar volgens mij is het 'preview effect' NIET uit te schakelen.
Zou soms wel eens fijn zijn. Ik gellof niet dat ik het zou missen, mijn processor wel ;-)
FastFiber