FastFiber

Aantal decimalen bij entget

Gestart door HofCAD, do 22 09 2005, 08:16:44

Vorige topic - Volgende topic

HofCAD


----------- ~\\|//~ ------------
------------
  • -
  • -------------
    -------ooO---(_)---Ooo-------- [/color]

    Beste CADliefhebbers,

    Het zal wel uiterst dom zijn :cry: , maar ik kan het aantal decimalen bij de entget functie niet instellen. :roll:
    In feite moeten er volgens mij zo'n 14 decimalen zijn, en ik krijg er
    maar 5. :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:  :oops:

    VB.
    <Entity name: 7ef54d90> ((-1 . <Entity name: 7ef54d90>) (0 . "LINE") (330 .
    <Entity name: 7ef54d08>) (5 . "32") (100 . "AcDbEntity") (67 . 0) (410 .
    "Model") (8 . "0") (100 . "AcDbLine") (10 5.81594 0.769737 0.0) (11 7.45829
    2.44455 0.0) (210 0.0 0.0 1.0))


    Bij voorbaat mijn dank.

    Groetjes HofCAD CSI
ACADcadabra

Kenny H

Beste HofCAD,

Ik heb die Printdxf bij mij ook eens getest.
Ik krijg soms 6 decimalen en soms minder dan 5. (Zie hieronder)
Volgens mij kiest autocad zelf het aantal decimalen :!:

CiteerCommand: l LINE Specify first point: 0.123456789,50

Specify next point or [Undo]: 50.123456789,50

Specify next point or [Undo]:

Command: PRINTDXF

entget of last entity:
(-1 . <Entity name: 7ef55da0>)
(0 . "LINE")
(330 . <Entity name: 7ef55d18>)
(5 . "34")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(100 . "AcDbLine")
(10 0.123457 50.0 0.0)
(11 50.1235 50.0 0.0)
(210 0.0 0.0 1.0)


PRINTDXF

Citeer(defun C:PRINTDXF ( )
 (setq ent (entlast))     ; Set ent to last entity.
 (setq entl (entget ent)) ; Set entl to association list of
                          ; last entity.
 (setq ct 0)              ; Set ct (a counter) to 0.
 (textpage)               ; Switch to the text screen.
 (princ "\nentget of last entity:")
 (repeat (length entl)    ; Repeat for number of members in list:
   (print (nth ct entl))  ; Print a newline, then each list
                          ; member.
   (setq ct (1+ ct))      ; Increments the counter by one.
 )
 (princ)                  ; Exit quietly.
)
8) Volvo 4 Life 8)

bart

ik denk dat de uitvoer gebonden is aan een bepaalde veldlengte

Als je hele kleine getallen invoerd (0,000000000001235,1) als punt bijvoorbeeld gaat hij over op wetenschappelijke notatie

het zelfde geld voor hele grote getallen

verder worden er geen extra nullen gebruikt
er komt dus niet 0,0100 te staan of zo

dus bij een test moet je de exacte lokatie nummeriek invoeren
je beeldscherm heeft namelijk maar een beperkt aantal punten
en deze zorgen volgens mij voor een bepaalde nauwkeurigheid bij een muisklik. (afhankelijk van hoe groot het deel van je tekening is dat op het scherm zichtbaar is natuurlijk)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

HofCAD

Citaat van: bartik denk dat de uitvoer gebonden is aan een bepaalde veldlengte


----------- ~\\|//~ ------------
------------
  • -
  • -------------
    -------ooO---(_)---Ooo--------
    [/color]


    Beste CADliefhebbers,

    Graag wil ik jullie bedanken voor jullie reacties.

    Stel ik doe het volgende:

    LUPREC 8
    LINE 20/3,40/3 @100/6,200/7 <enter>
    ID @

    Geeft: X = 23.33333333     Y = 41.90476190     Z = 0.00000000

    (- (cadr (getvar "LASTPOINT")) 41.90476190)
    Geeft: 4.76191e-009
    (wat ook zo hoort, want
    40/3+200/7= 41,904761904761904761904761904762)

    (setq e1 (entlast))
    (setq ed (entget e1))

    Geeft:((-1 . <Entity name: 400f4e28>) (0 . "LINE")
    (330 . <Entity name: 400f4cf8>) (5 . "6D") (100 . "AcDbEntity")
    (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine")
    (10 6.66667 13.3333 0.0) (11 23.3333 41.9048 0.0)
    (210 0.0 0.0  1.0))

    (setq pe (nth 10 ed))
    Geeft: (11 23.3333 41.9048 0.0)
    (caddr pe)
    Geeft: 41.9048 (Let op deze waarde)
    (- (caddr pe)  41.90476190)
    Geeft: 4.76191e-009


    De variabele ed bevat dus de Database opslag van de lijn.
    Als ik de Y-waarde naar Excel schrijf, krijg ik dus de rode waarde
    (41.9048) en nooit een nauwkeuriger waarde
    (in de buurt van 41.904761904761904761904761904762).
    Terwijl in de Database een nauwkeuriger waarde staat. :oops:
    Dat is toch vreemd.!!!!!!!!!!!!!!! :roll:

    Groetjes HofCAD CSI

    PS Dit probleem is bij mij opgekomen, door het AutoLisp programma
    HofREC om o.a. breedte en hoogte van rechthoeken naar Excel te
    exporteren.
    Voor HofREC: http://www.savefile.com/files/7375161
ACADcadabra

bart

moet je eens kijken wat je krijgt als je een punt als

128783214171263474998798798,1,0  gebruikt

(zonder cijfers achter de komma dus)

dan is de absolute onnauwkeurigheid nog veel groter.
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

HofCAD

Citaat van: bartmoet je eens kijken wat je krijgt als je een punt als

128783214171263474998798798,1,0  gebruikt

(zonder cijfers achter de komma dus)

dan is de absolute onnauwkeurigheid nog veel groter.


----------- ~\\|//~ ------------
------------
  • -
  • -------------
    -------ooO---(_)---Ooo-------- [/color]

    Beste Bart,

    Dit vind ik nog al mee vallen, maar ik gebruik voor mijn gemak
    wel een gemakkelijker getal.
    Het getal is van dezelfde grootte order, en dan zal het in principe
    niets moeten uitmaken.


    LINE 0,0 123456789012345678901234567,1,0  <enter>
    (setq e1 (entlast))
    (setq ed (entget e1))

    Geeft: ((-1 . <Entity name: 4005ed60>) (0 . "LINE")
    (330 . <Entity name: 4005ecf8>) (5 . "2C") (100 . "AcDbEntity") (67 . 0)
    (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 0.0 0.0 0.0)
    (11 1.23457e+026 1.0 0.0) (210 0.0 0.0 1.0))

    (setq pe (nth 10 ed))
    Geeft: (11 1.23457e+026 1.0 0.0)
    (cadr pe)
    Geeft: 1.23457e+026
    (- (cadr pe) 1.23456e+026)
    Geeft: 7.89012e+020
    (- (- (cadr pe) 1.23456e+026) 7.89012e+020)
    Geeft: 3.45682e+014
    (- (- (- (cadr pe) 1.23456e+026) 7.89012e+020) 3.4567e+014)
    Geeft: 1.20449e+010

    of

    (- (cadr pe) 123456789012345600000000000)
    Geeft: 8.58993e+010
    (- (cadr pe) 123456789012345670000000000)
    Geeft: 0.0

    Deze nauwkeurigheid van 16 cijfers is wat ik verwacht, maar waarom
    kan ik het getal niet met die nauwkeurigheid naar een XLS Excel bestand
    schrijven.

    Groetjes HofCAD CSI
ACADcadabra

bart

het is maar hoe je het bekijkt.

ik gaf ook al aan dat het absolute onnauwkeurigheid betreft
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

HofCAD

Citaat van: HofCADDeze nauwkeurigheid van 16 cijfers is wat ik verwacht, maar waarom
kan ik het getal niet met die nauwkeurigheid naar een XLS Excel bestand
schrijven.


----------- ~\\|//~ ------------
------------
  • -
  • -------------
    -------ooO---(_)---Ooo-------- [/color]

    Beste CADliefhebbers,

    Sorry, Sorry, Sorry en nog maals Sorry. :oops:  :oops:  :oops:
    Natuurlijk had ik in mijn programma HofREC voor meer decimalen
    (rtos PX 1 14) enz. moeten gebruiken.

       (mapcar   '(lambda (x) (princ X filedes))
          (list naam
                "\t"
                (rtos px 1 14)
                "\t"
                (rtos py 1 14)
                "\t"
                (rtos px 1 14)
                "\t"
                (rtos b 1 14)
                "\t"
                (rtos h 1 14)
                "\t"
                opp
                "\t"
                chg
                "\n"
          )
       )


    Maar ja, jullie weten het onderhand, ik ben blond. :oops:


    Groetjes HofCAD CSI
ACADcadabra