Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
3 replies to this topic

#1 tvxdvietkhoi

tvxdvietkhoi

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 03 September 2011 - 12:27 PM

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...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 đỡ!
  • 2

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 04 September 2011 - 07:58 PM

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)
)

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 6009 Bài viết
Điểm đánh giá: 3113 (tuyệt vời)

Đã gửi 05 September 2011 - 02:13 PM

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ề...
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#4 tvxdvietkhoi

tvxdvietkhoi

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 05 September 2011 - 09:58 PM

@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!
  • 0