Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
tvxdvietkhoi

[Yêu cầu]Chuyển chuỗi số thành số

Các bài được khuyến nghị

Chào các bạn,

Mình là kỹ sư của công ty TVXD Việt Khôi. Hiện tại công ty mình đang cần một chương trình Lisp có khả năng chuyển chuỗi số thành số, cụ thể như sau:

-Chức năng chính:

+Chuyển đổi chuỗi số gần nhau thành số. Ví dụ: một chuỗi: "123" "." "25" sẽ được chuyển thành "123.25".

-Chức năng mong muốn thêm:

+Có thể chuyển đổi nhiều đối tượng một lúc (mỗi chuỗi số là một đối tượng)

-Thông tin bổ sung:

+File Cad diễn đạt (Autocad 2000): http://www.mediafire.com/?nq2s9ay1l8hzlw6

+Mục đích sử dụng của chương trình là tùy chỉnh số liệu thu được sau khi nhập bình đồ xuất cao độ mia ở Nova (phiên bản 2004).

Vì quy mô nhỏ nên công ty mình không có kỹ sư chuyên biệt phụ trách về AutoLisp. Hy vọng được các bạn giúp đỡ!

  • Vote tăng 2

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Hôm qua trả lời rồi, giờ lại mất, mình post lại :)

Code theo yêu cầu trong bản vẽ, bạn cứ quét chọn hàng loạt

Có xử lý để dấu "." gần trùng với Point ban đầu. Gluck

(defun c:gt (/)
(defun ST:Ss->ListEnt (ss / n e l)
 (setq n (sslength ss))
 (while (setq e (ssname ss (setq n (1- n))))
(setq l (cons e l))
 ) 
)
;Lay boundingbox cua doi tuong
;en : ename
;isShow :  T : ve hinh bao tam quanh doi tuong
; nil : khong
; Tra ve list LL,LR,UR,UL
(defun ST:Geom-Entity-Box (ename isShow /   ll lr ur ul) 
 (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
 (setq ll (vlax-safearray->list ll)
 ur (vlax-safearray->list ur)
 ul (list (car ur)(cadr ll))
 lr (list (car ll)(cadr ur)))
(if isShow (grvecs (list -256 ll lr lr ur ur ul ul ll)))
(list ll ur ul lr)
 )
(defun ST:List-Split (old n / a lsttmp new)
(setq i 0 a (length old))
  (while (< i a)
 (repeat n (setq lsttmp (append lsttmp (list (car old))) old (cdr old)))
(setq new (append new  (list (vl-remove nil lsttmp)))
 i (+ i n)
 lsttmp '())
 )
 new)
(defun dxf (code en)(cdr(assoc code (entget en))))
(defun chdxf (code val en) (entmod (subst (cons code val) (assoc code (entget en)) (entget en))))
(Setq  ss (ST:Ss->ListEnt (ssget (list (cons 0 "TEXT,MTEXT,POINT"))))
 lstPoint (vl-remove-if-not '(lambda(x)(wcmatch (dxf 0 x) "POINT")) ss)
 lstEname  (vl-remove-if-not '(lambda(x)(wcmatch (dxf 0 x) "TEXT,MTEXT")) ss)
 lstEname (vl-sort  lstEname '(lambda (x y)(< (car (dxf 10 x))(car (dxf 10 y)))(> (cadr (dxf 10 x))(cadr (dxf 10 y)))))
 lstEname (ST:List-Split lstEname 2)
) 
(foreach lst lstEname
(setq lst (vl-sort lst '(lambda (x y)(< (car (dxf 10 x))(car (dxf 10 y))))))
(vla-put-alignment (setq 1st (vlax-ename->vla-object (car lst))) 5)
(vla-put-TextAlignmentPoint 1st
 (vlax-3d-point
  (last (vl-sort (ST:Geom-Entity-Box (last lst) nil) '(lambda(x y)(car x)(car y)(> (cadr x)(cadr y)))))
 )
)
(chdxf 1 (strcat (dxf 1 (car lst)) "." (dxf 1 (last lst))) (car lst))
(entdel (last lst))
)
(mapcar 'entdel lstPoint)
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Chào các bạn,

Mình là kỹ sư của công ty TVXD Việt Khôi. Hiện tại công ty mình đang cần một chương trình Lisp có khả năng chuyển chuỗi số thành số, cụ thể như sau:

-Chức năng chính:

 

-Chức năng mong muốn thêm:

 

-Thông tin bổ sung:

 

Vì quy mô nhỏ nên công ty mình không có kỹ sư chuyên biệt phụ trách về AutoLisp. Hy vọng được các bạn giúp đỡ!

Hề hề hề,

Yêu cầu của bạn chưa rõ ràng.

Sau khi có được cái text đó rồi thì bạn định làm gì???? Ghi vào bản vẽ??? Ghi ở đâu??? hay ghi vào file txt, cvs, xls......

Việc nối thành text mới không quá khó, song cần biết bạn dùng làm gì để tiện tay làm ;luôn kẻo sau đó bạn lại phải bổ sung vài cái yêu cầu nữa đối với cái text này thì cũng mệt....

Hề hề hề....

Vả lại bạn nói là gần nhau nghĩa là thế nào??? Gần với khoảng cách là bao nhiêu??? ngoài ra còn cần điều kliện chi nữa không???

Cứ theo cái bản vẽ bạn post thì mình thấy là các text cần nối phải có chung tọa độ y, không biết suy luận như vầy có đúng không ??? hay là chỉ cần các text nằm trên cùng một đường thẳng bất kỳ ????

Hề hề hề....

Mong bạn nói rõ hơn chút xíu để người làm lisp đỡ vất vả.....

hề hề hề...

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

@ketxu: Xin chân thành cảm ơn bạn! Đây đúng là thứ mình cần tìm, mình đã xài thử và kết quả rất tốt!

@phamthanhbinh: Cảm ơn lời góp ý rất chân tình của bạn! Mình đã bất cẩn khi không cung cấp đầy đủ thông tin. Rất may chương trình của bạn ketxu hoàn toàn giống với mong muốn của mình. Mình sẽ rút kinh nghiệm, hề hề hề! :P

Cảm ơn các bạn đã dành thời gian quan tâm!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×