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

chuyển 1 số có phần rời nhau thanh 1 số

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

Chào các bác!

Mình có 1 lisp như sau:

(defun c:2t1()

(setq ob (ssget))

(setq i 0)

(setq text "")

(while (< i (sslength ob))

(setq dataob (cdr (assoc 1 (entget (ssname ob i)))))

(setq text (strcat text dataob))

(if (> i 0)

(command "Erase" (ssname ob i) "")

)

(setq i (1+ i))

)

(setq obname (ssname ob 0))

(setq dataob (entget (ssname ob 0)))

(setq dataob (subst (cons 1 text) (assoc 1 dataob) dataob))

 

(entmod dataob)

(entupd obname)

 

)

 

-Muc đích trên bản vẽ có các số mà phần số nguyên và phần thập phân tách rời nhau

chọn từng phần ta sẽ được 1 số nguyên (có file bản vẽ)

http://www.cadviet.com/upfiles/2/soroi.dwg

ví dụ 2.15 trên bản vẽ nếu kích vào ta sẽ thấy 2. riêng và 15 riêng dùng chương trình chọn vào 2 phần trên ta được 1 số 2.15 liền nhau

nhưng mỗi lần chỉ làm được 1 số nếu ta bao hết thì số nhảy lung tung .

-Mình muốn 1 lần bao chọn hết các số thì các số sẽ chuyển đổi hết.

Mong các bác sớm hồi âm.cám ơn nhiều

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ác!

Mình có 1 lisp như sau:

...

-Muc đích trên bản vẽ có các số mà phần số nguyên và phần thập phân tách rời nhau

chọn từng phần ta sẽ được 1 số nguyên (có file bản vẽ)

http://www.cadviet.com/upfiles/2/soroi.dwg

ví dụ 2.15 trên bản vẽ nếu kích vào ta sẽ thấy 2. riêng và 15 riêng dùng chương trình chọn vào 2 phần trên ta được 1 số 2.15 liền nhau

nhưng mỗi lần chỉ làm được 1 số nếu ta bao hết thì số nhảy lung tung .

-Mình muốn 1 lần bao chọn hết các số thì các số sẽ chuyển đổi hết.

Mong các bác sớm hồi âm.cám ơn nhiều

 

Chưa rõ bạn muốn gì.

- Hỏi về lisp, nhờ người khác hướng dẫn bạn viết lisp?

- Yêu cầu viết lisp, nhờ người khác viết lisp giúp bạn?

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ưa rõ bạn muốn gì.

- Hỏi về lisp, nhờ người khác hướng dẫn bạn viết lisp?

- Yêu cầu viết lisp, nhờ người khác viết lisp giúp bạn?

Chào bác Hoành.

Mục đích của em là muốn các Bác giúp em sửa lại đoạn lisp trên vì mỗi lần em chỉ làm liên kết được có 1 số thôi.Em muốn mỗi lần chọn là các số trên bản vẽ đều liên kết với nhau . Em giải thich lại thế này nhé. Bác mở bản vẽ em đã gởi và cho chạy đoạn li sp trên,bác chọn phần số nguyên trước rồi sau đó chọn phần thập phân của số đó sau, số đó sẽ dính lại. nhưng bao chọn hết các số trên thì không được.

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 bác Hoành.

Mục đích của em là muốn các Bác giúp em sửa lại đoạn lisp trên vì mỗi lần em chỉ làm liên kết được có 1 số thôi.Em muốn mỗi lần chọn là các số trên bản vẽ đều liên kết với nhau . Em giải thich lại thế này nhé. Bác mở bản vẽ em đã gởi và cho chạy đoạn li sp trên,bác chọn phần số nguyên trước rồi sau đó chọn phần thập phân của số đó sau, số đó sẽ dính lại. nhưng bao chọn hết các số trên thì không được.

Bạn post lisp lên diễn đàn chắc bạn cũng ít nhiều biết về lisp. Vậy theo bạn, nên lập lisp thế nào để lisp nhận biết được nên dính cặp text nào vào với nhau trong hàng trăm text được chọn (chưa kể là số lượng text nhập vào có thể là số lẻ - không thành cặp)?

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
-Mình muốn 1 lần bao chọn hết các số thì các số sẽ chuyển đổi hết.

Mong các bác sớm hồi âm.cám ơn nhiều

Bác tham khảo đoạn code này nhé.

(defun C:C2T( / SS1 SS2 n1 n2 i LIS1 P p1 lis2 st st1 st2)
(defun dxf( name n)
(cdr (assoc n (entget name)))
)
(SETQ SS1 (SSGET "x" '((0 . "TEXT") (72 . 2))))
(SETQ SS2 (SSGET "x" '((0 . "TEXT") (72 . 0))))
(setq i 0)
(while (< i (sslength ss1))
(setq n1 (ssname ss1 i))
(setq p (dxf n1 11) P (STRCAT (RTOS (CAR P) 2 3) (RTOS (CADR P) 2 3)))
(setq lis1 (append lis1 (list (list p n1))))
(setq i (1+ i))
)
(setq i 0)
(while (< i (sslength ss2))
(setq n2 (ssname ss2 i))
(setq p (dxf n2 10) P1 (STRCAT (RTOS (CAR P) 2 3) (RTOS (CADR P) 2 3)))
(setq lis2 (assoc p1 lis1))
(if lis2 (progn
(setq n1 (cadr lis2))
(setq st1 (dxf n1 1) st2 (dxf n2 1) st (strcat st1 st2))
(entmod (subst (cons 1 st) (assoc 1 (entget n1)) (entget n1)))
(command "_.erase" n2 "")
))
(setq i (1+ i))
)
)

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

Đúng ý mình rồi! Cám ơn bạn Trungngamy nhiều nhiều nhé.Bạn có thể giúp mình thế này nhé.

-Chỉ bao các số muốn chọn

- Cộng các số đó với 1 số không đổi nào đó (vd: 2.22)

- nếu được trả các số đó về 2 phần ( số không dính nhau).Thanks!

 

Nhân tiện đây em cũng có vài lời với bác Hoành. Em lên diễn đàn cũng muốn học hỏi, nâng cao chuyên môn ,

chứ chẳng có ý hỏi đố đâu bác ạ. Bác thông cảm cho em, thực ra thì em cũng mới tự học li sp chút chút. Hai là

văn vẽ của em viết không được trôi chảy lắm . ba là em chua biết cách po st bài lên diễn đàn .Vậy chắc bác hiểu lầm em rồi.

Đoạn li sp trên em đã tìm đi tìm lại nhiều lần nhưng không được , nên đành phải po st lên nhờ anh em giup đỡ . Cảm ơn bác đã 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
Đúng ý mình rồi! Cám ơn bạn Trungngamy nhiều nhiều nhé.Bạn có thể giúp mình thế này nhé.

-Chỉ bao các số muốn chọn

- Cộng các số đó với 1 số không đổi nào đó (vd: 2.22)

- nếu được trả các số đó về 2 phần ( số không dính nhau).Thanks!

 

Nhân tiện đây em cũng có vài lời với bác Hoành. Em lên diễn đàn cũng muốn học hỏi, nâng cao chuyên môn ,

chứ chẳng có ý hỏi đố đâu bác ạ. Bác thông cảm cho em, thực ra thì em cũng mới tự học li sp chút chút. Hai là

văn vẽ của em viết không được trôi chảy lắm . ba là em chua biết cách po st bài lên diễn đàn .Vậy chắc bác hiểu lầm em rồi.

Đoạn li sp trên em đã tìm đi tìm lại nhiều lần nhưng không được , nên đành phải po st lên nhờ anh em giup đỡ . Cảm ơn bác đã quan tâm.

Ý tưởng của đoạn Lisp mà bạn TrungNGAMY giúp bạn nằm ở đây

Ý tưởng ở bài viết số 5 và Code thể hiện ở bài viết số 13

Còn bạn chỉ muốn bao các số muốn chọn thì bạn hãy sửa 2 dòng này

(SETQ SS1 (SSGET "x" '((0 . "TEXT") (72 . 2))))

(SETQ SS2 (SSGET "x" '((0 . "TEXT") (72 . 0))))

Thành :

(prompt "\n Chon cac so phan nguyen ")

(SETQ SS1 (SSGET '((0 . "TEXT") (72 . 2))))

(prompt "\n Chon cac so phan thap phan ")

(SETQ SS2 (SSGET '((0 . "TEXT") (72 . 0))))

Bạn hãy chạy lại thử xem nhé.

 

Còn về cách post bài viết thì bạn có thể xem ở đây :

Viết yêu cầu (Request) và trả lời (Response) như thế nào?

Và nếu bạn muốn cảm ơn ai thì hãy nhấn nút Thanks ở dưới mỗi bài viết thay vì post bài viết cảm ơn nhé.

  • 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

Tôi thấy các số nguyên đứng trước đều có dạng "2." hoặc "3.". Tức là số nguyên kèm theo dấu ".".

Số thập phân đứng sau có cùng điểm chèn với số nguyên đứng trước. Chắc là căn lề 1right + 1left.

Với điều này xử rất đơn giản cho toàn bộ bản vẽ của bạn

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  

×