Vb in een tekening zijn een hele reeks lose teksten met daar in cijfers.
Nu wil ik door middel van selecteren van alle losse tekst op telaten tellen.
Als je zelf een lisp wilt schrijven dan is deze link zeer interessant:
http://ww3.cad.de/foren/ubb/Forum145/HTML/003096.shtml
Deze van Lee Mac @theswamp.org zul je zeker waarderen.
Hij zit in m'n toolbox, meestal ben ik lui aangelegd...
Citaat van: cadtools@gmail.com op wo 12 05 2010, 11:49:03
Deze van Lee Mac @theswamp.org zul je zeker waarderen.
Hij zit in m'n toolbox, meestal ben ik lui aangelegd...
hoe werkt deze functie: ik heb deze algeladen en textmath in getypt maar, ik wil bij voorbeeld 4 texten laten optellen
en de 5e text het totaal van de text hebben.
text 1 = 3
text 2 = 3
text 3 = 2
text 4 = 1
text 5 = 9 (totaal waarde van 3+3+2+1=dus 9)
WIE WEET NOG EEN ANDERE LISP DEZE KOM IK NIET UIT :?:
Ja dat kan.
ik heb hiervoor de functie 'math'
Check.
https://sites.google.com/site/layercreator/
er staat een videotje op
COMMAND:MATH
Beste Balletje23,
Om te starten:
http://forums.cadalyst.com/showthread.php?t=6303&page=2
Het is echter bij sumtx niet geoorloofd dat er teksten voor het getal staan.
Met vriendelijke groet, HofCAD CSI.
PS Hoe zit het eigenlijk met:
http://www.cadsite.be/smf/index.php?topic=3959.0
en http://www.cadsite.be/smf/index.php?topic=4115.0
Citaat van: HofCAD op wo 29 09 2010, 16:29:38
Beste Balletje23,
Om te starten:
http://forums.cadalyst.com/showthread.php?t=6303&page=2
Het is echter bij sumtx niet geoorloofd dat er teksten voor het getal staan.
Met vriendelijke groet, HofCAD CSI.
Het is gelukt precies wat ik wilde hebben
Citaat van: HofCAD op wo 29 09 2010, 16:29:38
PS Hoe zit het eigenlijk met:
http://www.cadsite.be/smf/index.php?topic=4115.0
binnenkort ga ik hiermee verder ik was het al weer vergeten.
Hofcad kan je me helpen om de lips aan tepassen.
3.punten waar ik mee zit.
Het nadeel van deze script is dat hij
1-Geen komma's leest en wel punten bijvoorbeeld(5,2 neemt hij niet mee) bij 5.2 werkt dat wel
Dus als ik tekst 5,2 selecteer + 5,3 uikomst is 10 inplaats van 10,6
2-Tekst voor cijfer k5.2+5 uitkomst is 5.2.Beter is dat hij ook tekst voor als achter de cijfers herkent en die mee optelt.
3-Tekst perstuk selecteren dus als ik 5,2, 5,3 5,4 5,5 op moet optellen, moet ik 4 keer op de tekst klikken en vervolgens plaats je een tekst met daar de uitkomst. Handiger is om de teksten met window en cross aan teklikken en indien ik nog wat andere tekst erbij wil, dat ik verder met window ander tekst mee pak, daarna op een bestaande tekst teklikken en dat daar de juiste antwoord terecht komt.
;;; CADALYST 07/08 www.cadalyst.com/code
;;; Tip 2293: AddValues.lsp Add Text Values (c) 2008 Brock Narum
;;; AddValues.lsp Created by Brock Narum 02-03-08
;;; This Lisp routine will add up text values of objects selected in the
;;; dwg and prompt for insertion point of new text string with the total.
;;; Selected objects can either be attributes or text strings that are
;;; defined in the dwg or xrefed into the dwg.
;;;modifed by: alan thompson 6.5.08
;;;1. added ability to use mtext and AECC_POINT (in addition to text and attributes)
;;;2. added option to add or subtract
;;;3. cleaned up and modified code a bit
;;; modified by: alan thompson 8.4.08 (added trans (non-WCS) to (getpoint) for text placement)
;;;=========================== Main Routine =========================
(defun C:optellen (/ math_option plus_minus clname echo os dmscl val2 att val1 val2 tstyle theight p1 txt1)
(setq olderr *error*
*error* err01
clname (getvar "clayer")
echo (getvar "cmdecho")
os (getvar "osmode")
dmscl (getvar "dimscale")
)
(if (not default_option)
(setq default_option "Add")
);if
(initget 0 "Add Subtract")
(setq math_option
(cond
(
(getkword (strcat "\n Add or Subtract <ENTER to " default_option ">: "))
)
(default_option)
);cond
);setq
(setq default_option math_option)
(cond
((= math_option "Add")
(progn
(setq math_option +)
(setq plus_minus "Add")
);progn
)
((= math_option "Subtract")
(progn
(setq math_option -)
(setq plus_minus "Subtract")
);progn
)
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setq val2 0.0)
; (princ (strcat "\nSelect Text Objects to " plus_minus ": "))
(while (setq ref1 (entsel (strcat "\nSelect Text Object to " plus_minus ": ")))
(setq att (entget (car ref1)))
(if (or (= (cdr (assoc 0 att)) "ATTRIB")
(= (cdr (assoc 0 att)) "TEXT")
(= (cdr (assoc 0 att)) "MTEXT")
(= (cdr (assoc 0 att)) "AECC_POINT")
);or
;;; Filters out only attribute and text objects
(progn
(if
(= (cdr (assoc 0 att)) "AECC_POINT")
(progn
(setq dwg (vla-get-activedocument (vlax-get-acad-object)))
(setq val1 (rtos (last (assoc 11 att))))
);progn
(setq val1 (cdr (assoc 1 att)))
);if
(princ (strcat "\n" val1))
(setq val2 (abs (math_option (atof val1) val2)))
);;progn
);if or
);while
(princ (strcat "\nTotal = " (rtos val2 2 2)))
(setq val2 (rtos val2 2 2)
tstyle (getvar "textstyle")
; theight (* (/ dmscl 96.0) 6.0)
theight (getvar "textsize")
;;; Sets Text Height based on DWG Dimscale
)
(initget 1)
(setq p1 (trans (getpoint "\nPick Text Insertion Point.. ") 1 0))
; (SetLayer "GPM" 3 "Continuous")
;;; Internal function for setting clayer and creating if necessary
(setq txt1 (entmake (list '(0 . "text")
(cons 1 val2)
(cons 7 tstyle)
(cons 10 p1)
(cons 40 theight)
(cons 41 1)
(cons 50 0)
)
)
)
(setq *error* olderr)
(setvar "OSMODE" os)
(setvar "CLAYER" clname)
(setvar "CMDECHO" echo)
(princ)
)
;;;================= Sub Routine (Error Trapping) ===================
(Defun err01 (msg)
(setvar "osmode" os)
(setvar "cmdecho" echo)
(setvar "dimscale" dmscl)
(setq *error* olderr)
(princ msg)
(princ)
)
;;;================ Sub Routine (Set/Create Layer) ==================
(Defun SetLayer (lname lcolor llinetype / lay1)
(if (tblsearch "LAYER" lname)
(progn (setq lay1 (entget (tblobjname "layer" lname)))
(setq lay1 (subst (cons 70 0) (assoc 70 lay1) lay1)
lay1 (subst (cons 62 lcolor) (assoc 62 lay1) lay1)
)
(entmod lay1)
)
(progn (entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 lname)
'(70 . 0)
(cons 62 lcolor)
(cons 6 llinetype)
)
)
)
)
(setvar "clayer" lname)
)
Je wilt deze "som" dus op kunnen tellen:
5,2k+a23b48+cc+23.8xyz=
:D :D
Citaat van: roy_043 op do 04 11 2010, 22:04:03
Je wilt deze "som" dus op kunnen tellen:
5,2k+a23b48+cc+23.8xyz=
:D :D
nee dat ook weer niet zo ingewikkeld
eigenlijk wil ik dat hij compatible is.
Kijk de lisp kan ik voor bepaalde tekening gebruiken en zodra ik
een andere tekening openen en die anders is opgebouwd met bv letter + cijfer kan ik de lisp al niet meer gebruiken. dus moet ik het handmatig doen, doordat een lisp compatible is zou ik hem voor meerdere
soorten tekeningen kunnen gebruiken.
Citaat van: balletje23 op wo 03 11 2010, 15:14:202-Tekst voor cijfer k5.2+5 uitkomst is 5.2.Beter is dat hij ook tekst voor als achter de cijfers herkent en die mee optelt.
Hoe moet dit dan worden opgevat?
@ balletje23: Moet ik concluderen dat je niet meer geïnteresseerd bent in dit onderwerp?
Citaat van: roy_043 op vr 12 11 2010, 14:35:56
@ balletje23: Moet ik concluderen dat je niet meer geïnteresseerd bent in dit onderwerp?
:mrgreen:Sorry :mrgreen: ik was druk bezig met werk en ben dit vergeten, ga morgen even kijken wat ik precies wil hebben.
Het nadeel van deze script is dat hij
1-Geen komma's leest en wel punten bijvoorbeeld(5,2 neemt hij niet mee) bij 5.2 werkt dat wel
Dus als ik tekst 5,2 selecteer + 5,3 uikomst is 10 inplaats van 10,6
2-Tekst voor cijfer k5.2+5 uitkomst is 5.2.Beter is dat hij ook tekst voor als achter de cijfers herkent en die mee optelt.
3-Tekst perstuk selecteren dus als ik 5,2, 5,3 5,4 5,5 op moet optellen, moet ik 4 keer op de tekst klikken en vervolgens plaats je een tekst met daar de uitkomst. Handiger is om de teksten met window en cross aan teklikken en indien ik nog wat andere tekst erbij wil, dat ik verder met window ander tekst mee pak, daarna op een bestaande tekst teklikken en dat daar de juiste antwoord terecht komt.
Alleen punt 2 kan er wel tussen uit.
De rest lijkt me erg handig als het werkt.
Bijgevoegd: SumNum_B.lsp
1.
Ook komma-getallen worden opgeteld.
2.
Alle getallen worden uit de tekst gefilterd en opgeteld.
3.
Er kunnen meerdere bronteksten tegelijk worden geselecteerd.
4.
Voor het weergeven van het resultaat moet een bestaande (m)text of attrib worden geselecteerd.
5.
Werkt niet voor getallen in voeten en inches of in wetenschappelijke notatie (1.5e-16).
Bijvoorbeeld:
5,2k+a23b48+cc+23.8xyz
Levert:
5.2+23+48+0+23.8=100
Laat even weten of het werkt...
Ja dit is perfect voor mij werkt goed!! :vreegoe: :vreegoe:
Nog 1 extra dingetje is het mogelijk dat bij selectie van van de uitkomst,
het bestaande cijfer wordt aan gepast maar tekst/en de tekststylen: onderstrepen, vet, komma en punten enz behoudt.
vb
3,0 appel + 2.0 banaan =5,0 kilo ( ipv dat hij 5.0 van maakt).
Of
3.0 appel + 2.0 banaan =5,0 kilo (hier dat hij de komma onthoudt).
Dan is zou de lisp perfect zijn.
Citaat van: balletje23 op wo 24 11 2010, 14:55:23Nog 1 extra dingetje
Het is wat complexer dan jij denkt, maar ik zal er eens naar kijken.
Bijgevoegd SumNum_C.lsp. Opnieuw het verzoek om even te melden of het werkt.
Citaat van: roy_043 op vr 26 11 2010, 12:30:09
Bijgevoegd SumNum_C.lsp. Opnieuw het verzoek om even te melden of het werkt.
Roy je bent de beste :vreegoe: hij werkt nu perfect!!! thxx voor alles .
en een hele goede Weekend!!!!!!!!!!!!!!!!!!!!! :D